)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5b20169387842b80a4d56f5e56d7e301b7e7c306","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  that the user never actually configured"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Rework this function to both use \u0027_get_flavor_image_meta\u0027 and correctly"},{"line_number":19,"context_line":"\"set\" unset values to 0. This"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Ia99d2e4e502d6fa13572727a9dabc617f472cb0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_fdc801aa","line":19,"range":{"start_line":19,"start_character":25,"end_line":19,"end_character":29},"updated":"2017-02-09 10:04:18.000000000","message":"I feel like you are mid conversation with me here?","commit_id":"8608eb98431f5b4aced663d9c68b3f6c2b51fb9b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4ca8a461b9a94ff8ba168aeeba1058bdc3ef9ed1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  that the user never actually configured"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Rework this function to both use \u0027_get_flavor_image_meta\u0027 and correctly"},{"line_number":19,"context_line":"\"set\" unset values to 0. This"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Ia99d2e4e502d6fa13572727a9dabc617f472cb0f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_c5d35e5e","line":19,"range":{"start_line":19,"start_character":25,"end_line":19,"end_character":29},"in_reply_to":"1a430d35_fdc801aa","updated":"2017-02-09 16:16:04.000000000","message":"Not like me to get distra...","commit_id":"8608eb98431f5b4aced663d9c68b3f6c2b51fb9b"}],"nova/exception.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"3ff593a7ef47d9fa05484e09bc30943b12e697b1","unresolved":false,"context_lines":[{"line_number":1829,"context_line":""},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"class ImageVCPULimitsRangeExceeded(Invalid):"},{"line_number":1832,"context_line":"    msg_fmt \u003d _(\"Image vCPU limits %(image_sockets)d:%(image_cores)d\""},{"line_number":1833,"context_line":"                \":%(image_threads)d exceeds permitted %(flavor_sockets)d\""},{"line_number":1834,"context_line":"                \":%(flavor_cores)d:%(flavor_threads)d\")"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_8462b115","line":1834,"range":{"start_line":1832,"start_character":16,"end_line":1834,"end_character":54},"updated":"2018-01-23 12:21:41.000000000","message":"Can be good to make this message more friendly to let us know at first sight the numbers are in order of sockets, cores, threads and the permitted limited value is from flavor.","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4dfa758cbf909573098ce5048163cd8e5a3c53da","unresolved":false,"context_lines":[{"line_number":1829,"context_line":""},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"class ImageVCPULimitsRangeExceeded(Invalid):"},{"line_number":1832,"context_line":"    msg_fmt \u003d _(\"Image vCPU limits %(image_sockets)d:%(image_cores)d\""},{"line_number":1833,"context_line":"                \":%(image_threads)d exceeds permitted %(flavor_sockets)d\""},{"line_number":1834,"context_line":"                \":%(flavor_cores)d:%(flavor_threads)d\")"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_927a2922","line":1834,"range":{"start_line":1832,"start_character":16,"end_line":1834,"end_character":54},"in_reply_to":"7f96bb07_8462b115","updated":"2018-03-08 13:42:19.000000000","message":"Agree with Tetsuro. This message will end up looking like this:\n\n Image vCPU limits 1:1:0 exceeds permitted 1:0:0\n\nwhich is less than useful. How about something like this:\n\n Image vCPU topology limits (sockets\u003d1, cores\u003d1, threads\u003d0)\n exceeds the limits of the flavor (sockets\u003d1, cores\u003d0, threads\u003d0)","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f457fc059a529a78e1e4423c21baa1a8ae9fc2ce","unresolved":false,"context_lines":[{"line_number":1829,"context_line":""},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"class ImageVCPULimitsRangeExceeded(Invalid):"},{"line_number":1832,"context_line":"    msg_fmt \u003d _(\"Image vCPU limits %(image_sockets)d:%(image_cores)d\""},{"line_number":1833,"context_line":"                \":%(image_threads)d exceeds permitted %(flavor_sockets)d\""},{"line_number":1834,"context_line":"                \":%(flavor_cores)d:%(flavor_threads)d\")"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_d74c1378","line":1834,"range":{"start_line":1832,"start_character":16,"end_line":1834,"end_character":54},"in_reply_to":"7f96bb07_8462b115","updated":"2018-03-08 12:42:58.000000000","message":"instead of \n\"Image vCPU limits %(image_sockets)d:%(image_cores)d\"\n                \":%(image_threads)d exceeds permitted %(flavor_sockets)d\"\n                \":%(flavor_cores)d:%(flavor_threads)d\"\nperhaps\n\"Image vCPU request %(image_sockets)d:%(image_cores)d\"\n                \":%(image_threads)d exceeds permitted limits %(sockets_max)d\"\n                \":%(core_max)d:%(threads_max)d\"\n\nImageVCPULimitsRangeExceeded imply that the request that exceeded the limit comes form the image so we can keep the \nimage_sockets names but you are correct the the *_max limits can come from both image or flavour.","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de7a38542f0f4ae787e2ffb7aca526f21589930a","unresolved":false,"context_lines":[{"line_number":1829,"context_line":""},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"class ImageVCPULimitsRangeExceeded(Invalid):"},{"line_number":1832,"context_line":"    msg_fmt \u003d _(\"Image vCPU limits %(image_sockets)d:%(image_cores)d\""},{"line_number":1833,"context_line":"                \":%(image_threads)d exceeds permitted %(flavor_sockets)d\""},{"line_number":1834,"context_line":"                \":%(flavor_cores)d:%(flavor_threads)d\")"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_524c91c6","line":1834,"range":{"start_line":1832,"start_character":16,"end_line":1834,"end_character":54},"in_reply_to":"df7087c5_927a2922","updated":"2018-03-08 13:59:12.000000000","message":"Done","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de7a38542f0f4ae787e2ffb7aca526f21589930a","unresolved":false,"context_lines":[{"line_number":1829,"context_line":""},{"line_number":1830,"context_line":""},{"line_number":1831,"context_line":"class ImageVCPULimitsRangeExceeded(Invalid):"},{"line_number":1832,"context_line":"    msg_fmt \u003d _(\"Image vCPU limits %(image_sockets)d:%(image_cores)d\""},{"line_number":1833,"context_line":"                \":%(image_threads)d exceeds permitted %(flavor_sockets)d\""},{"line_number":1834,"context_line":"                \":%(flavor_cores)d:%(flavor_threads)d\")"},{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_324f9dbe","line":1834,"range":{"start_line":1832,"start_character":16,"end_line":1834,"end_character":54},"in_reply_to":"df7087c5_d74c1378","updated":"2018-03-08 13:59:12.000000000","message":"\u003e ImageVCPULimitsRangeExceeded imply that the request that exceeded\n \u003e the limit comes form the image so we can keep the\n \u003e image_sockets names but you are correct the the *_max limits can\n \u003e come from both image or flavour.\n\nI could be misunderstanding you, but I think you\u0027re confusing this with ImageVCPUTopologyRangeExceeded. This exception is raised when image and flavor maximums clash (at least, after this patch). The other one is raised when the requested number of sockets, threads, or cores exceed the max of the flavor or image limits.","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"3ff593a7ef47d9fa05484e09bc30943b12e697b1","unresolved":false,"context_lines":[{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"},{"line_number":1838,"context_line":"    msg_fmt \u003d _(\"Image vCPU topology %(image_sockets)d:%(image_cores)d\""},{"line_number":1839,"context_line":"                \":%(image_threads)d exceeds permitted %(max_sockets)d\""},{"line_number":1840,"context_line":"                \":%(max_cores)d:%(max_threads)d\")"},{"line_number":1841,"context_line":""},{"line_number":1842,"context_line":""},{"line_number":1843,"context_line":"class ImageVCPULimitsRangeImpossible(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_7fc61219","line":1840,"range":{"start_line":1838,"start_character":16,"end_line":1840,"end_character":48},"updated":"2018-01-23 12:21:41.000000000","message":"ditto. (and the limited value is from either flavor or image.)","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de7a38542f0f4ae787e2ffb7aca526f21589930a","unresolved":false,"context_lines":[{"line_number":1835,"context_line":""},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"class ImageVCPUTopologyRangeExceeded(Invalid):"},{"line_number":1838,"context_line":"    msg_fmt \u003d _(\"Image vCPU topology %(image_sockets)d:%(image_cores)d\""},{"line_number":1839,"context_line":"                \":%(image_threads)d exceeds permitted %(max_sockets)d\""},{"line_number":1840,"context_line":"                \":%(max_cores)d:%(max_threads)d\")"},{"line_number":1841,"context_line":""},{"line_number":1842,"context_line":""},{"line_number":1843,"context_line":"class ImageVCPULimitsRangeImpossible(Invalid):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_f2c60517","line":1840,"range":{"start_line":1838,"start_character":16,"end_line":1840,"end_character":48},"in_reply_to":"7f96bb07_7fc61219","updated":"2018-03-08 13:59:12.000000000","message":"Done","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"}],"nova/virt/hardware.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f47d7dc9ba6772c73c51ddf093d3015f27b30cbe","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    flavor_max_threads, image_max_threads \u003d _get_flavor_image_meta("},{"line_number":297,"context_line":"        \u0027cpu_max_threads\u0027, flavor, image_meta, 0)"},{"line_number":298,"context_line":"    # image metadata is already of the correct type"},{"line_number":299,"context_line":"    flavor_max_sockets \u003d int(flavor_max_sockets)"},{"line_number":300,"context_line":"    flavor_max_cores \u003d int(flavor_max_cores)"},{"line_number":301,"context_line":"    flavor_max_threads \u003d int(flavor_max_threads)"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_3d28c999","line":299,"updated":"2017-02-09 10:05:57.000000000","message":"should we worry about this raising, I guess we didn\u0027t do anything before in here, so thats consistent. Tempting to add that exception in the raises list.","commit_id":"8608eb98431f5b4aced663d9c68b3f6c2b51fb9b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4ca8a461b9a94ff8ba168aeeba1058bdc3ef9ed1","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    flavor_max_threads, image_max_threads \u003d _get_flavor_image_meta("},{"line_number":297,"context_line":"        \u0027cpu_max_threads\u0027, flavor, image_meta, 0)"},{"line_number":298,"context_line":"    # image metadata is already of the correct type"},{"line_number":299,"context_line":"    flavor_max_sockets \u003d int(flavor_max_sockets)"},{"line_number":300,"context_line":"    flavor_max_cores \u003d int(flavor_max_cores)"},{"line_number":301,"context_line":"    flavor_max_threads \u003d int(flavor_max_threads)"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_65e62a46","line":299,"in_reply_to":"1a430d35_3d28c999","updated":"2017-02-09 16:16:04.000000000","message":"Good call. I think raising the error is the correct thing to do here. I\u0027ll add that to the docstring.","commit_id":"8608eb98431f5b4aced663d9c68b3f6c2b51fb9b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bc35bbaa26a998713cfdac3a1de7932fa0553ab6","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    # image metadata is already of the correct type"},{"line_number":301,"context_line":"    flavor_max_sockets \u003d int(flavor_max_sockets)"},{"line_number":302,"context_line":"    flavor_max_cores \u003d int(flavor_max_cores)"},{"line_number":303,"context_line":"    flavor_max_threads \u003d int(flavor_max_threads)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    LOG.debug(\"Flavor limits %(sockets)d:%(cores)d:%(threads)d\","},{"line_number":306,"context_line":"              {\"sockets\": flavor_max_sockets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_b974b369","line":303,"updated":"2018-01-04 21:25:24.000000000","message":"Maybe I am missing something.\nimage_max_XXX can be always an integer without int()?","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d4c7eb31cda1f55cf93fe7855a953b6c31da1310","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    # image metadata is already of the correct type"},{"line_number":301,"context_line":"    flavor_max_sockets \u003d int(flavor_max_sockets)"},{"line_number":302,"context_line":"    flavor_max_cores \u003d int(flavor_max_cores)"},{"line_number":303,"context_line":"    flavor_max_threads \u003d int(flavor_max_threads)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    LOG.debug(\"Flavor limits %(sockets)d:%(cores)d:%(threads)d\","},{"line_number":306,"context_line":"              {\"sockets\": flavor_max_sockets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_c0391ad7","line":303,"in_reply_to":"9f91af0f_0113dd0e","updated":"2018-01-17 18:37:32.000000000","message":"Ah, I see. Thanks for your explanation.","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"68a6a7251c96fbb87698e37a2233523ba37313b8","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    # image metadata is already of the correct type"},{"line_number":301,"context_line":"    flavor_max_sockets \u003d int(flavor_max_sockets)"},{"line_number":302,"context_line":"    flavor_max_cores \u003d int(flavor_max_cores)"},{"line_number":303,"context_line":"    flavor_max_threads \u003d int(flavor_max_threads)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    LOG.debug(\"Flavor limits %(sockets)d:%(cores)d:%(threads)d\","},{"line_number":306,"context_line":"              {\"sockets\": flavor_max_sockets,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f91af0f_0113dd0e","line":303,"in_reply_to":"9f91af0f_b974b369","updated":"2018-01-05 11:49:48.000000000","message":"Yes because the image metadata is defined as an IntegerField [1].\n\n[1] https://github.com/openstack/nova/blob/d19e1252/nova/objects/image_meta.py#L245-L252","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"3ff593a7ef47d9fa05484e09bc30943b12e697b1","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            max_threads\u003dmax_threads)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    # If no preferred topology was set against the image then use the"},{"line_number":371,"context_line":"    # preferred topology from the flavor We use \u0027not or\u0027 rather than"},{"line_number":372,"context_line":"    # \u0027not and\u0027, since if any value is set against the image this"},{"line_number":373,"context_line":"    # invalidates the entire set of values from the flavor"},{"line_number":374,"context_line":"    if not (image_sockets or image_cores or image_threads):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_7f94d2e8","line":371,"range":{"start_line":371,"start_character":40,"end_line":371,"end_character":41},"updated":"2018-01-23 12:21:41.000000000","message":"period","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de7a38542f0f4ae787e2ffb7aca526f21589930a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            max_threads\u003dmax_threads)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    # If no preferred topology was set against the image then use the"},{"line_number":371,"context_line":"    # preferred topology from the flavor We use \u0027not or\u0027 rather than"},{"line_number":372,"context_line":"    # \u0027not and\u0027, since if any value is set against the image this"},{"line_number":373,"context_line":"    # invalidates the entire set of values from the flavor"},{"line_number":374,"context_line":"    if not (image_sockets or image_cores or image_threads):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_32e47dac","line":371,"range":{"start_line":371,"start_character":40,"end_line":371,"end_character":41},"in_reply_to":"7f96bb07_7f94d2e8","updated":"2018-03-08 13:59:12.000000000","message":"Done","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4dfa758cbf909573098ce5048163cd8e5a3c53da","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    # preferred topology from the flavor We use \u0027not or\u0027 rather than"},{"line_number":372,"context_line":"    # \u0027not and\u0027, since if any value is set against the image this"},{"line_number":373,"context_line":"    # invalidates the entire set of values from the flavor"},{"line_number":374,"context_line":"    if not (image_sockets or image_cores or image_threads):"},{"line_number":375,"context_line":"        sockets \u003d flavor_sockets"},{"line_number":376,"context_line":"        cores \u003d flavor_cores"},{"line_number":377,"context_line":"        threads \u003d flavor_threads"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_f2d28534","line":374,"range":{"start_line":374,"start_character":11,"end_line":374,"end_character":58},"updated":"2018-03-08 13:42:19.000000000","message":"could also do:\n\n if not any(image_sockets, image_cores, image_threads):","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de7a38542f0f4ae787e2ffb7aca526f21589930a","unresolved":false,"context_lines":[{"line_number":371,"context_line":"    # preferred topology from the flavor We use \u0027not or\u0027 rather than"},{"line_number":372,"context_line":"    # \u0027not and\u0027, since if any value is set against the image this"},{"line_number":373,"context_line":"    # invalidates the entire set of values from the flavor"},{"line_number":374,"context_line":"    if not (image_sockets or image_cores or image_threads):"},{"line_number":375,"context_line":"        sockets \u003d flavor_sockets"},{"line_number":376,"context_line":"        cores \u003d flavor_cores"},{"line_number":377,"context_line":"        threads \u003d flavor_threads"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_32fd5d3a","line":374,"range":{"start_line":374,"start_character":11,"end_line":374,"end_character":58},"in_reply_to":"df7087c5_f2d28534","updated":"2018-03-08 13:59:12.000000000","message":"Yup, that\u0027s cleaner","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"4dfa758cbf909573098ce5048163cd8e5a3c53da","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        cores \u003d image_cores"},{"line_number":381,"context_line":"        threads \u003d image_threads"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    LOG.debug(\"Chosen %(sockets)d:%(cores)d:%(threads)d limits \""},{"line_number":384,"context_line":"              \"%(maxsockets)d:%(maxcores)d:%(maxthreads)d\","},{"line_number":385,"context_line":"              {\"sockets\": sockets, \"cores\": cores,"},{"line_number":386,"context_line":"               \"threads\": threads, \"maxsockets\": max_sockets,"},{"line_number":387,"context_line":"               \"maxcores\": max_cores, \"maxthreads\": max_threads})"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_72e67519","line":384,"range":{"start_line":383,"start_character":0,"end_line":384,"end_character":59},"updated":"2018-03-08 13:42:19.000000000","message":"along with the exception message, this log message is also lacking clarity.\n\nThis is what will be output in the logs:\n\n nova.virt.hardware: Chosen 1:1:0 limits 2:2:0\n\nwhich is... less than useful, IMHO.","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"de7a38542f0f4ae787e2ffb7aca526f21589930a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        cores \u003d image_cores"},{"line_number":381,"context_line":"        threads \u003d image_threads"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    LOG.debug(\"Chosen %(sockets)d:%(cores)d:%(threads)d limits \""},{"line_number":384,"context_line":"              \"%(maxsockets)d:%(maxcores)d:%(maxthreads)d\","},{"line_number":385,"context_line":"              {\"sockets\": sockets, \"cores\": cores,"},{"line_number":386,"context_line":"               \"threads\": threads, \"maxsockets\": max_sockets,"},{"line_number":387,"context_line":"               \"maxcores\": max_cores, \"maxthreads\": max_threads})"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_72b1958f","line":384,"range":{"start_line":383,"start_character":0,"end_line":384,"end_character":59},"in_reply_to":"df7087c5_72e67519","updated":"2018-03-08 13:59:12.000000000","message":"I\u0027ve cleaned this up too","commit_id":"75b087def44f56c30b87e81b7655ee81ad37607d"}]}
