)]}'
{"nova/scheduler/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"638af30550b495272834b10232da1fed61847c32","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # primitive since it can contain versioned objects."},{"line_number":50,"context_line":"    limits \u003d {}"},{"line_number":51,"context_line":"    for k, v in host_state.limits.items():"},{"line_number":52,"context_line":"        if isinstance(v, obj_base.NovaObject):"},{"line_number":53,"context_line":"            limits[k] \u003d v.obj_to_primitive()"},{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            limits[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_a3754bcd","line":52,"updated":"2017-07-17 18:56:02.000000000","message":"Can it really be anything other than a NovaObject? It sucks to have ambiguity in what is returned.","commit_id":"bb12dfe6545702f9dab1e1c7944afefb7b05ebd4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"835029ab6e6e2f4a897854e7c1d8a8396c1f9847","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # primitive since it can contain versioned objects."},{"line_number":50,"context_line":"    limits \u003d {}"},{"line_number":51,"context_line":"    for k, v in host_state.limits.items():"},{"line_number":52,"context_line":"        if isinstance(v, obj_base.NovaObject):"},{"line_number":53,"context_line":"            limits[k] \u003d v.obj_to_primitive()"},{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            limits[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_ad5d3516","line":52,"in_reply_to":"1f1a1f67_27370650","updated":"2017-07-17 20:22:36.000000000","message":"Well, technically it can have anything in it given out of tree scheduler filters can cram shit into the host state object that is used here...but yeah I can restrict.","commit_id":"bb12dfe6545702f9dab1e1c7944afefb7b05ebd4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"31abf929639768efa664106d2596aa74a1e4da11","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # primitive since it can contain versioned objects."},{"line_number":50,"context_line":"    limits \u003d {}"},{"line_number":51,"context_line":"    for k, v in host_state.limits.items():"},{"line_number":52,"context_line":"        if isinstance(v, obj_base.NovaObject):"},{"line_number":53,"context_line":"            limits[k] \u003d v.obj_to_primitive()"},{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            limits[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_e7a0ee92","line":52,"in_reply_to":"1f1a1f67_a3754bcd","updated":"2017-07-17 19:19:52.000000000","message":"Well, we could make this specific to NUMATopologyLimits which is, so far as I can tell, the only thing that goes into HostState.limits.","commit_id":"bb12dfe6545702f9dab1e1c7944afefb7b05ebd4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9c857c8d0090854263fe435bb362fc6923d2ca3f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # primitive since it can contain versioned objects."},{"line_number":50,"context_line":"    limits \u003d {}"},{"line_number":51,"context_line":"    for k, v in host_state.limits.items():"},{"line_number":52,"context_line":"        if isinstance(v, obj_base.NovaObject):"},{"line_number":53,"context_line":"            limits[k] \u003d v.obj_to_primitive()"},{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            limits[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f1a1f67_27370650","line":52,"in_reply_to":"1f1a1f67_e7a0ee92","updated":"2017-07-17 19:24:48.000000000","message":"So limits is a dict that can only ever have one key? Weird. Either way, I think we should check for limits[\u0027numa\u0027] (or whatever) and serialize that specifically.","commit_id":"bb12dfe6545702f9dab1e1c7944afefb7b05ebd4"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a9252454024529b542706e1c01f407db11d45a91","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    # case specifically as we don\u0027t care about handling out of tree filters"},{"line_number":52,"context_line":"    # or drivers injecting non-serializable things in the limits dict."},{"line_number":53,"context_line":"    if \u0027numa_topology\u0027 in limits:"},{"line_number":54,"context_line":"        limits[\u0027numa_topology\u0027] \u003d limits[\u0027numa_topology\u0027].obj_to_primitive()"},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027host\u0027: host_state.host,"},{"line_number":57,"context_line":"        \u0027nodename\u0027: host_state.nodename,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_0f53c1e3","line":54,"updated":"2017-07-19 09:32:14.000000000","message":"Why you don\u0027t convert the object to primitive in NUMATopologyFilter when we set the limits for NUMA? That seems to me more natural than here.","commit_id":"179d41a56070869af9ae208907dee7c61c0f655d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"16b260ea42d8541d586af254a2247ed20dad7b54","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    # case specifically as we don\u0027t care about handling out of tree filters"},{"line_number":52,"context_line":"    # or drivers injecting non-serializable things in the limits dict."},{"line_number":53,"context_line":"    if \u0027numa_topology\u0027 in limits:"},{"line_number":54,"context_line":"        limits[\u0027numa_topology\u0027] \u003d limits[\u0027numa_topology\u0027].obj_to_primitive()"},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027host\u0027: host_state.host,"},{"line_number":57,"context_line":"        \u0027nodename\u0027: host_state.nodename,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_47f4f0f0","line":54,"in_reply_to":"1f1a1f67_0f53c1e3","updated":"2017-07-19 17:38:42.000000000","message":"I thought about that but that makes an assumption about what HostState.limits is used for, so we\u0027re tightly-coupled either way.","commit_id":"179d41a56070869af9ae208907dee7c61c0f655d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"e29430142c9600b06e973212caf40e89438f75d1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    # case specifically as we don\u0027t care about handling out of tree filters"},{"line_number":52,"context_line":"    # or drivers injecting non-serializable things in the limits dict."},{"line_number":53,"context_line":"    if \u0027numa_topology\u0027 in limits:"},{"line_number":54,"context_line":"        limits[\u0027numa_topology\u0027] \u003d limits[\u0027numa_topology\u0027].obj_to_primitive()"},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027host\u0027: host_state.host,"},{"line_number":57,"context_line":"        \u0027nodename\u0027: host_state.nodename,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_5fe5bedb","line":54,"in_reply_to":"1f1a1f67_47f4f0f0","updated":"2017-07-20 09:52:54.000000000","message":"What has been done here is a hack and should be reverted -  The real fix is on the filter.\n\nThe filter has to be conform to the core code not the inverse.","commit_id":"179d41a56070869af9ae208907dee7c61c0f655d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a9cd0f6957aa2e95b7cd3ddc424297dee351a755","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    # case specifically as we don\u0027t care about handling out of tree filters"},{"line_number":52,"context_line":"    # or drivers injecting non-serializable things in the limits dict."},{"line_number":53,"context_line":"    if \u0027numa_topology\u0027 in limits:"},{"line_number":54,"context_line":"        limits[\u0027numa_topology\u0027] \u003d limits[\u0027numa_topology\u0027].obj_to_primitive()"},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027host\u0027: host_state.host,"},{"line_number":57,"context_line":"        \u0027nodename\u0027: host_state.nodename,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f1a1f67_7202f10b","line":54,"in_reply_to":"1f1a1f67_5fe5bedb","updated":"2017-07-20 10:04:15.000000000","message":"\u003e What has been done here is a hack and should be reverted -  The real fix is on the filter.\n\u003e The filter has to be conform to the core code not the inverse.\n\nI don\u0027t understand. Could you show an example fix?","commit_id":"179d41a56070869af9ae208907dee7c61c0f655d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5f4fa7f7e57c4a369676142a9b41b1535a204b90","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    # case specifically as we don\u0027t care about handling out of tree filters"},{"line_number":52,"context_line":"    # or drivers injecting non-serializable things in the limits dict."},{"line_number":53,"context_line":"    if \u0027numa_topology\u0027 in limits:"},{"line_number":54,"context_line":"        limits[\u0027numa_topology\u0027] \u003d limits[\u0027numa_topology\u0027].obj_to_primitive()"},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027host\u0027: host_state.host,"},{"line_number":57,"context_line":"        \u0027nodename\u0027: host_state.nodename,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff346bd7_7c6829b8","line":54,"in_reply_to":"1f1a1f67_7202f10b","updated":"2017-07-26 15:52:46.000000000","message":"https://review.openstack.org/#/c/486058/","commit_id":"179d41a56070869af9ae208907dee7c61c0f655d"}]}
