)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e924404027f96209146e541a461fbef2207d0175","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VGPU: Define vgpu resource class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is to add definition of resource class for vgpu,"},{"line_number":10,"context_line":"and there will be a serial of patches to implement vgpu."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially Implements: blueprint add-support-for-vgpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f4b6375_78061789","line":9,"range":{"start_line":9,"start_character":54,"end_line":9,"end_character":58},"updated":"2017-10-20 21:26:53.000000000","message":"VGPU and VGPU_DISPLAY_HEAD\n\nmay as well list \u0027em here.","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8ccaa193ac05996e5d76280c3674ed875783529e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VGPU: Define vgpu resource class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is to add definition of resource class for vgpu,"},{"line_number":10,"context_line":"and there will be a serial of patches to implement vgpu."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially Implements: blueprint add-support-for-vgpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f4b6375_2515084b","line":9,"range":{"start_line":9,"start_character":54,"end_line":9,"end_character":58},"in_reply_to":"3f4b6375_78061789","updated":"2017-10-23 01:34:24.000000000","message":"agreed, I will update this in next patch, thanks for your suggestions Eric:)","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e924404027f96209146e541a461fbef2207d0175","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VGPU: Define vgpu resource class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is to add definition of resource class for vgpu,"},{"line_number":10,"context_line":"and there will be a serial of patches to implement vgpu."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially Implements: blueprint add-support-for-vgpu"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f4b6375_b8da4f14","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":26},"updated":"2017-10-20 21:26:53.000000000","message":"series","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8ccaa193ac05996e5d76280c3674ed875783529e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"VGPU: Define vgpu resource class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is to add definition of resource class for vgpu,"},{"line_number":10,"context_line":"and there will be a serial of patches to implement vgpu."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially Implements: blueprint add-support-for-vgpu"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f4b6375_c5099431","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":26},"in_reply_to":"3f4b6375_b8da4f14","updated":"2017-10-23 01:34:24.000000000","message":"yes, my fault","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"}],"nova/objects/compute_node.py":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"7cff2dd42007c97c60aff153890614bb4cdc6a70","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":94,"context_line":"        \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":95,"context_line":"        \u0027mapped\u0027: fields.IntegerField(),"},{"line_number":96,"context_line":"        \u0027vgpus\u0027: fields.IntegerField(),"},{"line_number":97,"context_line":"        \u0027vgpu_display_head\u0027: fields.IntegerField(),"},{"line_number":98,"context_line":"        }"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_4d16ad57","line":96,"updated":"2017-10-16 01:48:43.000000000","message":"Need update db model also when adding new fields at here. It\u0027s potential to have multiple resource providers(different types of PGPUs) in a single compute node. So a single IntegerField of vgpus can\u0027t cover that.\n\nPer my understanding, the trend is to save resources in resource providers\u0027 inventory instead of the object of compute node. So you don\u0027t need define fields for vGPU.","commit_id":"252ccf8421b2e5e557d1ca34647192671523cc1f"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"68a5ad5cfa2b48112982781fde42675a01e6c058","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":94,"context_line":"        \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":95,"context_line":"        \u0027mapped\u0027: fields.IntegerField(),"},{"line_number":96,"context_line":"        \u0027vgpus\u0027: fields.IntegerField(),"},{"line_number":97,"context_line":"        \u0027vgpu_display_head\u0027: fields.IntegerField(),"},{"line_number":98,"context_line":"        }"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_503cc62d","line":96,"in_reply_to":"5f4e5783_4d16ad57","updated":"2017-10-18 01:32:12.000000000","message":"will delete them here","commit_id":"252ccf8421b2e5e557d1ca34647192671523cc1f"}],"nova/objects/flavor.py":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"0da3f557f528cfc261395a2aa3e57c64991b23d3","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        \u0027is_public\u0027: fields.BooleanField(),"},{"line_number":216,"context_line":"        \u0027extra_specs\u0027: fields.DictOfStringsField(),"},{"line_number":217,"context_line":"        \u0027projects\u0027: fields.ListOfStringsField(),"},{"line_number":218,"context_line":"        \u0027vgpus\u0027: fields.IntegerField(),"},{"line_number":219,"context_line":"        \u0027vgpu_display_head\u0027: fields.IntegerField(),"},{"line_number":220,"context_line":"        # TODO(huanxie): There is definition in os-traits"},{"line_number":221,"context_line":"        # https://github.com/openstack/os-traits/blob/master/os_traits/hw/gpu/resolution.py"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_9192f2f5","line":218,"updated":"2017-10-11 10:11:10.000000000","message":"use extra_specs for vgpus.","commit_id":"bd66cfb236a6c2ed4f78c8d48e0c31254fb3cd7b"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8432d3dc8fbc1ccac2833dde3e8c3a5fa598252b","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        \u0027is_public\u0027: fields.BooleanField(),"},{"line_number":216,"context_line":"        \u0027extra_specs\u0027: fields.DictOfStringsField(),"},{"line_number":217,"context_line":"        \u0027projects\u0027: fields.ListOfStringsField(),"},{"line_number":218,"context_line":"        \u0027vgpus\u0027: fields.IntegerField(),"},{"line_number":219,"context_line":"        \u0027vgpu_display_head\u0027: fields.IntegerField(),"},{"line_number":220,"context_line":"        # TODO(huanxie): There is definition in os-traits"},{"line_number":221,"context_line":"        # https://github.com/openstack/os-traits/blob/master/os_traits/hw/gpu/resolution.py"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_331786f0","line":218,"in_reply_to":"5f4e5783_9192f2f5","updated":"2017-10-13 05:13:58.000000000","message":"Got it, since extra_specs is dic, so there is no need for changes in this file flavor.py. I\u0027ll delete these.","commit_id":"bd66cfb236a6c2ed4f78c8d48e0c31254fb3cd7b"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"0da3f557f528cfc261395a2aa3e57c64991b23d3","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        \u0027vgpu_display_head\u0027: fields.IntegerField(),"},{"line_number":220,"context_line":"        # TODO(huanxie): There is definition in os-traits"},{"line_number":221,"context_line":"        # https://github.com/openstack/os-traits/blob/master/os_traits/hw/gpu/resolution.py"},{"line_number":222,"context_line":"        \u0027vgpu_resolution\u0027: fields.StringField(),"},{"line_number":223,"context_line":"        }"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_d1b18a91","line":222,"range":{"start_line":222,"start_character":7,"end_line":222,"end_character":48},"updated":"2017-10-11 10:11:10.000000000","message":"The traits should be in the extra_specs also:\nhttps://specs.openstack.org/openstack/nova-specs/specs/queens/approved/request-traits-in-nova.html#proposed-change","commit_id":"bd66cfb236a6c2ed4f78c8d48e0c31254fb3cd7b"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8432d3dc8fbc1ccac2833dde3e8c3a5fa598252b","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        \u0027vgpu_display_head\u0027: fields.IntegerField(),"},{"line_number":220,"context_line":"        # TODO(huanxie): There is definition in os-traits"},{"line_number":221,"context_line":"        # https://github.com/openstack/os-traits/blob/master/os_traits/hw/gpu/resolution.py"},{"line_number":222,"context_line":"        \u0027vgpu_resolution\u0027: fields.StringField(),"},{"line_number":223,"context_line":"        }"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f4e5783_f3d68e27","line":222,"range":{"start_line":222,"start_character":7,"end_line":222,"end_character":48},"in_reply_to":"5f4e5783_d1b18a91","updated":"2017-10-13 05:13:58.000000000","message":"Done","commit_id":"bd66cfb236a6c2ed4f78c8d48e0c31254fb3cd7b"}],"nova/scheduler/utils.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2069fde5eea9724466e8a548b22810a5b782bcc3","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        resources:$STANDARD_RESOURCE_CLASS\u003d0"},{"line_number":96,"context_line":"    ...to remove that resource class from the request."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        resources:$STANDARD_RESOURCE_CLASS\u003d$N"},{"line_number":99,"context_line":"    ...to override the flavor\u0027s value for that resource class with $N"},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    resource_specs \u003d {key.split(\"resources:\", 1)[-1]: val"},{"line_number":102,"context_line":"            for key, val in extra_specs.items()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_ac9ea0b5","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":69},"updated":"2017-10-20 13:21:54.000000000","message":"Now there is one more option. A standard resource class that does not override the flavor value (e.g. VGPU, VGPU_DISPLAY_HEAD) as the flavor does not have such value.","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8ccaa193ac05996e5d76280c3674ed875783529e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        resources:$STANDARD_RESOURCE_CLASS\u003d0"},{"line_number":96,"context_line":"    ...to remove that resource class from the request."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        resources:$STANDARD_RESOURCE_CLASS\u003d$N"},{"line_number":99,"context_line":"    ...to override the flavor\u0027s value for that resource class with $N"},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    resource_specs \u003d {key.split(\"resources:\", 1)[-1]: val"},{"line_number":102,"context_line":"            for key, val in extra_specs.items()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_5718b773","line":99,"range":{"start_line":98,"start_character":0,"end_line":99,"end_character":69},"in_reply_to":"3f4b6375_ac9ea0b5","updated":"2017-10-23 01:34:24.000000000","message":"Ah, yes, I should update this part, thanks for reminder @Balazs, I will update it in next patch","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e924404027f96209146e541a461fbef2207d0175","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    # VGPU and VGPU_DISPLAY_HEAD are standard resource class,"},{"line_number":131,"context_line":"    # but defined in flavor.extra_spec, so deal with them here when"},{"line_number":132,"context_line":"    # processing extra_spec"},{"line_number":133,"context_line":"    std_resources \u003d resources.keys()"},{"line_number":134,"context_line":"    std_resources.append(fields.ResourceClass.VGPU)"},{"line_number":135,"context_line":"    std_resources.append(fields.ResourceClass.VGPU_DISPLAY_HEAD)"},{"line_number":136,"context_line":"    for std_key in std_keys:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_181163ad","line":133,"range":{"start_line":133,"start_character":20,"end_line":133,"end_character":36},"updated":"2017-10-20 21:26:53.000000000","message":"...but if you want it to work this way, you\u0027ll have to say\n\n list(resources.keys())\n\nor even\n\n list(resources)\n\nfor the sake of py3","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8ccaa193ac05996e5d76280c3674ed875783529e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    # VGPU and VGPU_DISPLAY_HEAD are standard resource class,"},{"line_number":131,"context_line":"    # but defined in flavor.extra_spec, so deal with them here when"},{"line_number":132,"context_line":"    # processing extra_spec"},{"line_number":133,"context_line":"    std_resources \u003d resources.keys()"},{"line_number":134,"context_line":"    std_resources.append(fields.ResourceClass.VGPU)"},{"line_number":135,"context_line":"    std_resources.append(fields.ResourceClass.VGPU_DISPLAY_HEAD)"},{"line_number":136,"context_line":"    for std_key in std_keys:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_45c244eb","line":133,"range":{"start_line":133,"start_character":20,"end_line":133,"end_character":36},"in_reply_to":"3f4b6375_181163ad","updated":"2017-10-23 01:34:24.000000000","message":"@ERic, thanks a lot for your suggestion, I\u0027ll update this part:)","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2069fde5eea9724466e8a548b22810a5b782bcc3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                        {\"key\": custom_key, \"val\": custom_val})"},{"line_number":128,"context_line":"                continue"},{"line_number":129,"context_line":"            resources[custom_key] \u003d custom_val"},{"line_number":130,"context_line":"    # VGPU and VGPU_DISPLAY_HEAD are standard resource class,"},{"line_number":131,"context_line":"    # but defined in flavor.extra_spec, so deal with them here when"},{"line_number":132,"context_line":"    # processing extra_spec"},{"line_number":133,"context_line":"    std_resources \u003d resources.keys()"},{"line_number":134,"context_line":"    std_resources.append(fields.ResourceClass.VGPU)"},{"line_number":135,"context_line":"    std_resources.append(fields.ResourceClass.VGPU_DISPLAY_HEAD)"},{"line_number":136,"context_line":"    for std_key in std_keys:"},{"line_number":137,"context_line":"        if std_key not in std_resources:"},{"line_number":138,"context_line":"            LOG.warning(\"Received an invalid ResourceClass \u0027%(key)s\u0027 in \""},{"line_number":139,"context_line":"                    \"extra_specs.\", {\"key\": std_key})"},{"line_number":140,"context_line":"            continue"},{"line_number":141,"context_line":"        val \u003d validate_int(std_key)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_ccd31c38","line":138,"range":{"start_line":130,"start_character":0,"end_line":138,"end_character":1},"updated":"2017-10-20 13:21:54.000000000","message":"This could be done in a more generic way. \nthe resources dict contains those resource that are predefined by the flavor (VCPU, MEMORY_MB, DISK_GB) plus the above loop added those resources from the flavor extra_spec that has CUSTOM_ prefix. What we want to check in the if in L138 is that all the requested resource is either CUSTOM_ prefixed or part of the fields.ResourceClass.STANDARD resource class list. So I suggest to have the following code instead:\n\n    for std_key in std_keys:\n        if std_key not in set(resources).union(fields.ResourceClass.STANDARD):\n\nThis way if new resource classes are added to the STANDARD list we don\u0027t have to add them here manually.","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8ccaa193ac05996e5d76280c3674ed875783529e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                        {\"key\": custom_key, \"val\": custom_val})"},{"line_number":128,"context_line":"                continue"},{"line_number":129,"context_line":"            resources[custom_key] \u003d custom_val"},{"line_number":130,"context_line":"    # VGPU and VGPU_DISPLAY_HEAD are standard resource class,"},{"line_number":131,"context_line":"    # but defined in flavor.extra_spec, so deal with them here when"},{"line_number":132,"context_line":"    # processing extra_spec"},{"line_number":133,"context_line":"    std_resources \u003d resources.keys()"},{"line_number":134,"context_line":"    std_resources.append(fields.ResourceClass.VGPU)"},{"line_number":135,"context_line":"    std_resources.append(fields.ResourceClass.VGPU_DISPLAY_HEAD)"},{"line_number":136,"context_line":"    for std_key in std_keys:"},{"line_number":137,"context_line":"        if std_key not in std_resources:"},{"line_number":138,"context_line":"            LOG.warning(\"Received an invalid ResourceClass \u0027%(key)s\u0027 in \""},{"line_number":139,"context_line":"                    \"extra_specs.\", {\"key\": std_key})"},{"line_number":140,"context_line":"            continue"},{"line_number":141,"context_line":"        val \u003d validate_int(std_key)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f4b6375_77c0537c","line":138,"range":{"start_line":130,"start_character":0,"end_line":138,"end_character":1},"in_reply_to":"3f4b6375_ccd31c38","updated":"2017-10-23 01:34:24.000000000","message":"Yes, it\u0027s much better to deal as you suggested, then we can avoid updating this code next time when adding standard resource classes which are in flavor.extra_spec.\nThanks very much @Balazs:)","commit_id":"d373805f7fe55b6eaf8cdaea668d074ba5e66258"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"69c9302cf3f513b1a6a712f68a0ffb99c1aeed58","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    ...to remove that resource class from the request."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        resources:$STANDARD_RESOURCE_CLASS\u003d$N"},{"line_number":99,"context_line":"    ...to add standard resource class (e.g. VGPU) to the request,"},{"line_number":100,"context_line":"    or to override the flavor\u0027s value for that resource class with $N"},{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":"    resource_specs \u003d {key.split(\"resources:\", 1)[-1]: val"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_ecba116c","line":99,"updated":"2017-10-24 10:16:35.000000000","message":"that is a necessary change indeed.","commit_id":"501b00fdecf812d05c4a09df42f37bd38afa90fe"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"69c9302cf3f513b1a6a712f68a0ffb99c1aeed58","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    # Some standard class like VGPU and VGPU_DISPLAY_HEAD are using"},{"line_number":133,"context_line":"    # flavor.extra_spec for schedule, so deal with all standard resource here"},{"line_number":134,"context_line":"    for std_key in std_keys:"},{"line_number":135,"context_line":"        if std_key not in set(resources).union(fields.ResourceClass.STANDARD):"},{"line_number":136,"context_line":"            LOG.warning(\"Received an invalid ResourceClass \u0027%(key)s\u0027 in \""},{"line_number":137,"context_line":"                    \"extra_specs.\", {\"key\": std_key})"},{"line_number":138,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_ac0c1941","line":135,"range":{"start_line":135,"start_character":47,"end_line":135,"end_character":76},"updated":"2017-10-24 10:16:35.000000000","message":"but I do wonder if we would want to explicitly accept any standard resource class to be asked if we only support at the moment vcpus, ram, disk and VGPUs ? I mean, not all standard RCs are reported by the new-style get_inventory method, so we should just explicitly only accept VGPU and VGPU_OVERHEAD here in my mind and leave anyone modifying this once we support all the RCs by the Placement API.","commit_id":"501b00fdecf812d05c4a09df42f37bd38afa90fe"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e4dd8d14046aeba1e2b648ad09f38c4326d97fee","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    # Some standard class like VGPU and VGPU_DISPLAY_HEAD are using"},{"line_number":133,"context_line":"    # flavor.extra_spec for schedule, so deal with all standard resource here"},{"line_number":134,"context_line":"    for std_key in std_keys:"},{"line_number":135,"context_line":"        if std_key not in set(resources).union(fields.ResourceClass.STANDARD):"},{"line_number":136,"context_line":"            LOG.warning(\"Received an invalid ResourceClass \u0027%(key)s\u0027 in \""},{"line_number":137,"context_line":"                    \"extra_specs.\", {\"key\": std_key})"},{"line_number":138,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f4b6375_2fd93b7e","line":135,"range":{"start_line":135,"start_character":47,"end_line":135,"end_character":76},"in_reply_to":"3f4b6375_ac0c1941","updated":"2017-10-24 10:26:13.000000000","message":"Actually, after thinking it more, I think it\u0027s okay to support all the existing standard RCs since it\u0027s just for a placement and once we will accept any of them, operators won\u0027t need to modify their flavors.","commit_id":"501b00fdecf812d05c4a09df42f37bd38afa90fe"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"11af49afa5fe5c6e22f2f1c5798299a370c501dd","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    # Some standard class like VGPU and VGPU_DISPLAY_HEAD are using"},{"line_number":133,"context_line":"    # flavor.extra_spec for schedule, so deal with all standard resource here"},{"line_number":134,"context_line":"    for std_key in std_keys:"},{"line_number":135,"context_line":"        if std_key not in set(resources).union(fields.ResourceClass.STANDARD):"},{"line_number":136,"context_line":"            LOG.warning(\"Received an invalid ResourceClass \u0027%(key)s\u0027 in \""},{"line_number":137,"context_line":"                    \"extra_specs.\", {\"key\": std_key})"},{"line_number":138,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_b2d903f4","line":135,"updated":"2017-10-24 17:07:31.000000000","message":"I don\u0027t understand why this is required. If it is, I think it probably should be a separate change so we can have a descriptive commit message, separate from merely updating the enum.","commit_id":"7726af95e8c7d17b596fd2eb63a592ceb2776586"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3ae3a40506b6bf9fe4d8773a7fab80e5e198bc87","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    # Some standard class like VGPU and VGPU_DISPLAY_HEAD are using"},{"line_number":133,"context_line":"    # flavor.extra_spec for schedule, so deal with all standard resource here"},{"line_number":134,"context_line":"    for std_key in std_keys:"},{"line_number":135,"context_line":"        if std_key not in set(resources).union(fields.ResourceClass.STANDARD):"},{"line_number":136,"context_line":"            LOG.warning(\"Received an invalid ResourceClass \u0027%(key)s\u0027 in \""},{"line_number":137,"context_line":"                    \"extra_specs.\", {\"key\": std_key})"},{"line_number":138,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f4b6375_18759964","line":135,"in_reply_to":"3f4b6375_b2d903f4","updated":"2017-10-24 17:29:16.000000000","message":"Ack, will split that","commit_id":"7726af95e8c7d17b596fd2eb63a592ceb2776586"}],"nova/tests/functional/api/openstack/placement/gabbits/resource-classes.yaml":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1534270387deb5bfb119f63981543d0f8d53e21f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"  response_json_paths:"},{"line_number":120,"context_line":"      $.resource_classes.`len`: 13  # 12 standard plus 1 custom"},{"line_number":121,"context_line":"      $.resource_classes[12].name: $ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":122,"context_line":"      $.resource_classes[12].links[?rel \u003d \"self\"].href: /resource_classes/$ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"- name: update standard resource class"},{"line_number":125,"context_line":"  PUT: /resource_classes/VCPU"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f4b6375_c4a708bd","line":122,"updated":"2017-10-25 10:32:00.000000000","message":"This is fine because it worked before, but the ordering of the resource classes is an implementation detail, not something that\u0027s designed in. If there\u0027s a change in that implementation that fact that customs come after standards could change.\n\nWhich is fine, not a problem, just noting it.","commit_id":"5694ff0635ec165bec2d34504ae6060219bc0d9c"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"fb9c3db10c6f135febb1f4cc0ef5b55cfcd6b3a8","unresolved":false,"context_lines":[{"line_number":119,"context_line":"  response_json_paths:"},{"line_number":120,"context_line":"      $.resource_classes.`len`: 13  # 12 standard plus 1 custom"},{"line_number":121,"context_line":"      $.resource_classes[12].name: $ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":122,"context_line":"      $.resource_classes[12].links[?rel \u003d \"self\"].href: /resource_classes/$ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"- name: update standard resource class"},{"line_number":125,"context_line":"  PUT: /resource_classes/VCPU"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3f4b6375_12ad499a","line":122,"in_reply_to":"3f4b6375_c4a708bd","updated":"2017-10-26 01:40:01.000000000","message":"Thanks Chris for explaining this:)","commit_id":"5694ff0635ec165bec2d34504ae6060219bc0d9c"}]}
