)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"56c11fbbb63d93e0d4b4297e4aac7291fc2b35ac","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Simplify instance name generation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a lot more complicated than necessary due to the previous use"},{"line_number":10,"context_line":"of the now-removed \u0027multi_instance_display_name_template\u0027 opt. Clean"},{"line_number":11,"context_line":"things up somewhat and add a lot of docs (it took me a while to grasp)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If5369bcf4a6f7fc36190e153776e60446eb14040"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_12901843","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":56},"updated":"2018-05-09 15:36:56.000000000","message":"This is still mentioned in the API reference:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/api-ref/source/parameters.yaml#n5754","commit_id":"e6244f73ed060da3b2547d35addad766de3aab57"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"09b843023e73f2d3ce3afca347dbf95fd478d4ab","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Simplify instance name generation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a lot more complicated than necessary due to the previous use"},{"line_number":10,"context_line":"of the now-removed \u0027multi_instance_display_name_template\u0027 opt. Clean"},{"line_number":11,"context_line":"things up somewhat and add a lot of docs (it took me a while to grasp)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If5369bcf4a6f7fc36190e153776e60446eb14040"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5f7c97a3_a919897a","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":56},"in_reply_to":"5f7c97a3_12901843","updated":"2018-05-11 13:00:30.000000000","message":"Done","commit_id":"e6244f73ed060da3b2547d35addad766de3aab57"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"87321fc50a575461a42052d9427eba9686b0646f","unresolved":false,"context_lines":[{"line_number":5755,"context_line":"  required: true"},{"line_number":5756,"context_line":"  type: string"},{"line_number":5757,"context_line":"  description: |"},{"line_number":5758,"context_line":"    A base name for creating unique names during multiple create. An index"},{"line_number":5759,"context_line":"    string will be appended to the end of this base name for every server"},{"line_number":5760,"context_line":"    created meaning the server names will become ``{name}-1``, ``{name}-2``,"},{"line_number":5761,"context_line":"    ``{name}-3`` and so forth."},{"line_number":5762,"context_line":"service:"},{"line_number":5763,"context_line":"  description: |"},{"line_number":5764,"context_line":"    Object representing a compute service."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f7c97a3_89832003","line":5761,"range":{"start_line":5758,"start_character":66,"end_line":5761,"end_character":30},"updated":"2018-06-13 22:54:30.000000000","message":"This is not always true like in cellv1 or prior to Rocky when config option was removed and create confusion [1]. \n\nI am little hesitate to have this kind of code specific things in API ref which consider as contract. If not then we should have some comment in code about this API contract so that we do not accidentally change the format. \n\ncan we remove these name format things from here.\n\n[1] https://review.openstack.org/#/c/575132/4\n    https://review.openstack.org/#/c/569199/","commit_id":"cee6ae752d0a0a8096e7df7e73c4623f55f20eeb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4a38f8eecbd77e2b6a56cf56ee8890420c84347b","unresolved":false,"context_lines":[{"line_number":5755,"context_line":"  required: true"},{"line_number":5756,"context_line":"  type: string"},{"line_number":5757,"context_line":"  description: |"},{"line_number":5758,"context_line":"    A base name for creating unique names during multiple create. An index"},{"line_number":5759,"context_line":"    string will be appended to the end of this base name for every server"},{"line_number":5760,"context_line":"    created meaning the server names will become ``{name}-1``, ``{name}-2``,"},{"line_number":5761,"context_line":"    ``{name}-3`` and so forth."},{"line_number":5762,"context_line":"service:"},{"line_number":5763,"context_line":"  description: |"},{"line_number":5764,"context_line":"    Object representing a compute service."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5f7c97a3_462da9fb","line":5761,"range":{"start_line":5758,"start_character":66,"end_line":5761,"end_character":30},"in_reply_to":"5f7c97a3_89832003","updated":"2018-06-18 13:47:20.000000000","message":"Done","commit_id":"cee6ae752d0a0a8096e7df7e73c4623f55f20eeb"}],"nova/compute/api.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ac46e1e027befa140cfd59a47c3978828b9f0e8e","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"        - Else use the instance\u0027s UUID"},{"line_number":1398,"context_line":"        \"\"\""},{"line_number":1399,"context_line":"        display_name \u003d instance.get(\u0027display_name\u0027)"},{"line_number":1400,"context_line":"        if instance.obj_attr_is_set(\u0027hostname\u0027):"},{"line_number":1401,"context_line":"            hostname \u003d instance.get(\u0027hostname\u0027)"},{"line_number":1402,"context_line":"        else:"},{"line_number":1403,"context_line":"            hostname \u003d None"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"        # NOTE(mriedem): This is only here for test simplicity since a server"},{"line_number":1406,"context_line":"        # name is required in the REST API."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_59dd9312","line":1403,"range":{"start_line":1400,"start_character":7,"end_line":1403,"end_character":27},"updated":"2017-11-01 07:30:37.000000000","message":"this can be moved to before line 1430 now","commit_id":"895897b867c68b20baf274f1f74ee4290bbffc9f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"298632f21f1215eea5167975e5ebee3bc8bf511e","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"        - Else use the instance\u0027s UUID"},{"line_number":1398,"context_line":"        \"\"\""},{"line_number":1399,"context_line":"        display_name \u003d instance.get(\u0027display_name\u0027)"},{"line_number":1400,"context_line":"        if instance.obj_attr_is_set(\u0027hostname\u0027):"},{"line_number":1401,"context_line":"            hostname \u003d instance.get(\u0027hostname\u0027)"},{"line_number":1402,"context_line":"        else:"},{"line_number":1403,"context_line":"            hostname \u003d None"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"        # NOTE(mriedem): This is only here for test simplicity since a server"},{"line_number":1406,"context_line":"        # name is required in the REST API."}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_60945c38","line":1403,"range":{"start_line":1400,"start_character":7,"end_line":1403,"end_character":27},"in_reply_to":"3f4b6375_59dd9312","updated":"2017-11-21 17:23:55.000000000","message":"It could, but that\u0027s going to make this change even more complicated :) Can I do this after?","commit_id":"895897b867c68b20baf274f1f74ee4290bbffc9f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ac46e1e027befa140cfd59a47c3978828b9f0e8e","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"            # display_name. We need to ensure that the display_name *without*"},{"line_number":1425,"context_line":"            # the index contains valid characters, else we could end up with"},{"line_number":1426,"context_line":"            # just the index (which will be valid) as the hostname"},{"line_number":1427,"context_line":"            if utils.sanitize_hostname(display_name):"},{"line_number":1428,"context_line":"                display_name \u003d instance.display_name"},{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"        if hostname is None:"},{"line_number":1431,"context_line":"            default_hostname \u003d self._default_host_name(instance.uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_391777a6","line":1428,"range":{"start_line":1427,"start_character":12,"end_line":1428,"end_character":52},"updated":"2017-11-01 07:30:37.000000000","message":"a edge case is only support 63 chars\nhttps://github.com/openstack/nova/blob/master/nova/utils.py#L555\nwe might have same hostname if the template is too long\n\nand I think we need some cases to cover this logic?\n\nand do we need some update notice about host name changes behavior?","commit_id":"895897b867c68b20baf274f1f74ee4290bbffc9f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"298632f21f1215eea5167975e5ebee3bc8bf511e","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"            # display_name. We need to ensure that the display_name *without*"},{"line_number":1425,"context_line":"            # the index contains valid characters, else we could end up with"},{"line_number":1426,"context_line":"            # just the index (which will be valid) as the hostname"},{"line_number":1427,"context_line":"            if utils.sanitize_hostname(display_name):"},{"line_number":1428,"context_line":"                display_name \u003d instance.display_name"},{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"        if hostname is None:"},{"line_number":1431,"context_line":"            default_hostname \u003d self._default_host_name(instance.uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_c0cbe850","line":1428,"range":{"start_line":1427,"start_character":12,"end_line":1428,"end_character":52},"in_reply_to":"3f4b6375_391777a6","updated":"2017-11-21 17:23:55.000000000","message":"I\u0027m not sure I understand you. There should be no change in behavior here","commit_id":"895897b867c68b20baf274f1f74ee4290bbffc9f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"24017979a61d255374e88200d1b256dd1c39e5e3","unresolved":false,"context_lines":[{"line_number":1420,"context_line":"                default_hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1421,"context_line":"                instance.hostname \u003d utils.sanitize_hostname("},{"line_number":1422,"context_line":"                    instance.display_name, default_hostname)"},{"line_number":1423,"context_line":"        elif num_instances \u003e\u003d 1 and self.cell_type !\u003d \u0027api\u0027:"},{"line_number":1424,"context_line":"            old_display_name \u003d instance.display_name"},{"line_number":1425,"context_line":"            new_display_name \u003d \u0027%s-%d\u0027 % (old_display_name, index + 1)"},{"line_number":1426,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_cb9c19c2","line":1423,"range":{"start_line":1423,"start_character":28,"end_line":1423,"end_character":29},"updated":"2018-05-10 05:54:28.000000000","message":"this is confusing\n\nif xxx \u003d\u003d 1:\n\nelif xxx \u003e\u003d 1 \n\nI don\u0027t think \u003e\u003d is needed, \u003e should be fine","commit_id":"dc9361346fafbb0ed47fade5c2e6acaa7ae5dc75"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"09b843023e73f2d3ce3afca347dbf95fd478d4ab","unresolved":false,"context_lines":[{"line_number":1420,"context_line":"                default_hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1421,"context_line":"                instance.hostname \u003d utils.sanitize_hostname("},{"line_number":1422,"context_line":"                    instance.display_name, default_hostname)"},{"line_number":1423,"context_line":"        elif num_instances \u003e\u003d 1 and self.cell_type !\u003d \u0027api\u0027:"},{"line_number":1424,"context_line":"            old_display_name \u003d instance.display_name"},{"line_number":1425,"context_line":"            new_display_name \u003d \u0027%s-%d\u0027 % (old_display_name, index + 1)"},{"line_number":1426,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_8154a722","line":1423,"range":{"start_line":1423,"start_character":28,"end_line":1423,"end_character":29},"in_reply_to":"5f7c97a3_cb9c19c2","updated":"2018-05-11 13:00:30.000000000","message":"Whoops, yeah, that shouldn\u0027t be there.","commit_id":"dc9361346fafbb0ed47fade5c2e6acaa7ae5dc75"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3d50bd63f66b8e0e2a5f49b2e7cec5fbe5745f91","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\""},{"line_number":1410,"context_line":"        # NOTE(mriedem): This is only here for test simplicity since a server"},{"line_number":1411,"context_line":"        # name is required in the REST API."},{"line_number":1412,"context_line":"        if \u0027display_name\u0027 not in instance or not instance.display_name:"},{"line_number":1413,"context_line":"            instance.display_name \u003d \u0027Server %s\u0027 % instance.uuid"},{"line_number":1414,"context_line":""},{"line_number":1415,"context_line":"        # if we\u0027re booting multiple instances, we need to add an indexing"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_83ec938f","line":1412,"range":{"start_line":1412,"start_character":45,"end_line":1412,"end_character":71},"updated":"2018-05-14 06:55:27.000000000","message":"This looks like changed our compatible legacy v2 API behavior. https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L457\n\nUser can input \u0027    \u0027, then that normlize_name method strip the space, in original, it won\u0027t generate a display_name. But with this change, it will.","commit_id":"a56c434253514e62f1c7fe4e010c1fdadc969873"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1906f8e4097d0cb7e574cbf86362f7047bbd8d5e","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"        \"\"\""},{"line_number":1410,"context_line":"        # NOTE(mriedem): This is only here for test simplicity since a server"},{"line_number":1411,"context_line":"        # name is required in the REST API."},{"line_number":1412,"context_line":"        if \u0027display_name\u0027 not in instance or not instance.display_name:"},{"line_number":1413,"context_line":"            instance.display_name \u003d \u0027Server %s\u0027 % instance.uuid"},{"line_number":1414,"context_line":""},{"line_number":1415,"context_line":"        # if we\u0027re booting multiple instances, we need to add an indexing"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_078dcf30","line":1412,"range":{"start_line":1412,"start_character":45,"end_line":1412,"end_character":71},"in_reply_to":"5f7c97a3_83ec938f","updated":"2018-05-15 09:00:11.000000000","message":"Done","commit_id":"a56c434253514e62f1c7fe4e010c1fdadc969873"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7aba469685c5135e9217decfeec796cf00716c11","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"        # suffix to both instance.hostname and instance.display_name. This is"},{"line_number":1417,"context_line":"        # not necessary for a single instance."},{"line_number":1418,"context_line":"        if num_instances \u003d\u003d 1:"},{"line_number":1419,"context_line":"            if \u0027hostname\u0027 not in instance:"},{"line_number":1420,"context_line":"                default_hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1421,"context_line":"                instance.hostname \u003d utils.sanitize_hostname("},{"line_number":1422,"context_line":"                    instance.display_name, default_hostname)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_b6d9cf57","line":1419,"range":{"start_line":1419,"start_character":12,"end_line":1419,"end_character":42},"updated":"2018-05-14 07:07:05.000000000","message":"Do we need this check? before this line, it is always None.","commit_id":"a56c434253514e62f1c7fe4e010c1fdadc969873"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1906f8e4097d0cb7e574cbf86362f7047bbd8d5e","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"        # suffix to both instance.hostname and instance.display_name. This is"},{"line_number":1417,"context_line":"        # not necessary for a single instance."},{"line_number":1418,"context_line":"        if num_instances \u003d\u003d 1:"},{"line_number":1419,"context_line":"            if \u0027hostname\u0027 not in instance:"},{"line_number":1420,"context_line":"                default_hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1421,"context_line":"                instance.hostname \u003d utils.sanitize_hostname("},{"line_number":1422,"context_line":"                    instance.display_name, default_hostname)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e70f7385","line":1419,"range":{"start_line":1419,"start_character":12,"end_line":1419,"end_character":42},"in_reply_to":"5f7c97a3_b6d9cf57","updated":"2018-05-15 09:00:11.000000000","message":"Good spot. I\u0027d kept this because it was in the original function (line 1404) but, as you note, it\u0027s unnecessary","commit_id":"a56c434253514e62f1c7fe4e010c1fdadc969873"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7aba469685c5135e9217decfeec796cf00716c11","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"            old_display_name \u003d instance.display_name"},{"line_number":1425,"context_line":"            new_display_name \u003d \u0027%s-%d\u0027 % (old_display_name, index + 1)"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"            if \u0027hostname\u0027 not in instance:"},{"line_number":1428,"context_line":"                if utils.sanitize_hostname(old_display_name) \u003d\u003d \"\":"},{"line_number":1429,"context_line":"                    instance.hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1430,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_56dabb4a","line":1427,"range":{"start_line":1427,"start_character":12,"end_line":1427,"end_character":42},"updated":"2018-05-14 07:07:05.000000000","message":"ditto","commit_id":"a56c434253514e62f1c7fe4e010c1fdadc969873"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1906f8e4097d0cb7e574cbf86362f7047bbd8d5e","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"            old_display_name \u003d instance.display_name"},{"line_number":1425,"context_line":"            new_display_name \u003d \u0027%s-%d\u0027 % (old_display_name, index + 1)"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"            if \u0027hostname\u0027 not in instance:"},{"line_number":1428,"context_line":"                if utils.sanitize_hostname(old_display_name) \u003d\u003d \"\":"},{"line_number":1429,"context_line":"                    instance.hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1430,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_872a3fd8","line":1427,"range":{"start_line":1427,"start_character":12,"end_line":1427,"end_character":42},"in_reply_to":"5f7c97a3_56dabb4a","updated":"2018-05-15 09:00:11.000000000","message":"Done","commit_id":"a56c434253514e62f1c7fe4e010c1fdadc969873"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"03b6c4919485eb2e767d86dcfefc25a559a05e34","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"        # if we\u0027re booting multiple instances, we need to add an indexing"},{"line_number":1416,"context_line":"        # suffix to both instance.hostname and instance.display_name. This is"},{"line_number":1417,"context_line":"        # not necessary for a single instance."},{"line_number":1418,"context_line":"        if num_instances \u003d\u003d 1:"},{"line_number":1419,"context_line":"            default_hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1420,"context_line":"            instance.hostname \u003d utils.sanitize_hostname("},{"line_number":1421,"context_line":"                instance.display_name, default_hostname)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_24b4737f","line":1418,"range":{"start_line":1418,"start_character":8,"end_line":1418,"end_character":30},"updated":"2018-05-16 02:48:48.000000000","message":"looks like previously if hostname is set , we won\u0027t modify hostname in this logic, but now ,even hostname is set , we still modify the hostname, not sure it\u0027s correct or not..","commit_id":"9606bcfbcb313870fcf3165f0c4e2ee8e75db9f1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4ccad5da31ac452c63a9679a98567c2704de4734","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"        # if we\u0027re booting multiple instances, we need to add an indexing"},{"line_number":1416,"context_line":"        # suffix to both instance.hostname and instance.display_name. This is"},{"line_number":1417,"context_line":"        # not necessary for a single instance."},{"line_number":1418,"context_line":"        if num_instances \u003d\u003d 1:"},{"line_number":1419,"context_line":"            default_hostname \u003d \u0027Server-%s\u0027 % instance.uuid"},{"line_number":1420,"context_line":"            instance.hostname \u003d utils.sanitize_hostname("},{"line_number":1421,"context_line":"                instance.display_name, default_hostname)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_e1789fc4","line":1418,"range":{"start_line":1418,"start_character":8,"end_line":1418,"end_character":30},"in_reply_to":"5f7c97a3_24b4737f","updated":"2018-05-16 15:06:21.000000000","message":"Done. The test was faulty. Nothing in the code path was setting this","commit_id":"9606bcfbcb313870fcf3165f0c4e2ee8e75db9f1"}]}
