)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb824a4346d966170c7c7a4931475f37e2926a25","unresolved":false,"context_lines":[{"line_number":11,"context_line":"it would be useful to expose a virtual TPM device within the guest."},{"line_number":12,"context_line":"This spec describes adding flavor/image properties which cause such a"},{"line_number":13,"context_line":"device to be added to the VM."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I3179413b91e528b5b5d86825768fef98c9dae33c"},{"line_number":16,"context_line":"Signed-off-by: Stephen Finucane \u003cstephenfin@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff570b3c_ce1f6eb5","line":14,"updated":"2020-06-10 14:57:49.000000000","message":"nit: you should have said it was accepted for Ussuri :\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/ussuri/approved/add-emulated-virtual-tpm.html","commit_id":"97f088befb82f5bbbc433727b8754bb278ac7d8e"}],"specs/victoria/approved/add-emulated-virtual-tpm.rst":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":82,"context_line":"All of the following apply to the compute (not conductor/scheduler/API)"},{"line_number":83,"context_line":"configs:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* A new config option will be introduced to act as a \"master switch\" enabling"},{"line_number":86,"context_line":"  vTPM. This config option would apply to future drivers\u0027 implementations as"},{"line_number":87,"context_line":"  well, but since this spec and current implementation are specific to libvirt,"},{"line_number":88,"context_line":"  it is in the ``libvirt`` rather than the ``compute`` group::"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"     [libvirt]"},{"line_number":91,"context_line":"     vtpm_enabled \u003d $bool (default False)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* To enable move operations (anything involving rebuilding a vTPM on a new"},{"line_number":94,"context_line":"  host), nova must be able to lay down the vTPM data with the correct ownership"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_464fef91","line":91,"range":{"start_line":85,"start_character":0,"end_line":91,"end_character":41},"updated":"2020-05-22 16:05:52.000000000","message":"My personal preference would be to just start with it in the compute group to avoid work in the future tbh.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":82,"context_line":"All of the following apply to the compute (not conductor/scheduler/API)"},{"line_number":83,"context_line":"configs:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"* A new config option will be introduced to act as a \"master switch\" enabling"},{"line_number":86,"context_line":"  vTPM. This config option would apply to future drivers\u0027 implementations as"},{"line_number":87,"context_line":"  well, but since this spec and current implementation are specific to libvirt,"},{"line_number":88,"context_line":"  it is in the ``libvirt`` rather than the ``compute`` group::"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"     [libvirt]"},{"line_number":91,"context_line":"     vtpm_enabled \u003d $bool (default False)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* To enable move operations (anything involving rebuilding a vTPM on a new"},{"line_number":94,"context_line":"  host), nova must be able to lay down the vTPM data with the correct ownership"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_583a0be7","line":91,"range":{"start_line":85,"start_character":0,"end_line":91,"end_character":41},"in_reply_to":"ff570b3c_464fef91","updated":"2020-05-26 12:48:55.000000000","message":"ya i can see that argument.\n\nthe only other virt driver that is likely to supprot vtpm in the short term would be hyperv\n\nthe out of tree hyperv driver already does support vtpm although it works significatly differently. i dont think they use openstack to perserve the vtpm info during move operation, they may not perserve it at all and they have not scheduler support for the capability.\n\n\nso while the intree hyperv driver could be extended i dont think it will be.\n\nim kind of neutral on moving it to compute i suspect this will only be relevent to the libvirt driver in the next release or two which is why i think the libvirt section makes sense but its certenly valid to use compute too.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* To enable move operations (anything involving rebuilding a vTPM on a new"},{"line_number":94,"context_line":"  host), nova must be able to lay down the vTPM data with the correct ownership"},{"line_number":95,"context_line":"  -- that of the ``swtpm`` process libvirt will create -- but we can\u0027t detect a"},{"line_number":96,"context_line":"  priori what that ownership will be. Thus we need a pair of config options on"},{"line_number":97,"context_line":"  the compute indicating the user and group that should own vTPM data on that"},{"line_number":98,"context_line":"  host::"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_06033711","line":96,"range":{"start_line":95,"start_character":78,"end_line":96,"end_character":8},"updated":"2020-05-22 16:05:52.000000000","message":"remove this","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  the compute indicating the user and group that should own vTPM data on that"},{"line_number":98,"context_line":"  host::"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"     [libvirt]"},{"line_number":101,"context_line":"     swtpm_user \u003d $str (default \u0027tss\u0027)"},{"line_number":102,"context_line":"     swtpm_group \u003d $str (default \u0027tss\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* (Existing, known) options for ``[key_manager]``."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_980ca343","line":102,"range":{"start_line":100,"start_character":4,"end_line":102,"end_character":39},"updated":"2020-05-26 12:48:55.000000000","message":"this at least should be in the libvirt section as its libvirt driver specific.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":177,"context_line":"#. Even though swift is not required for spawn, ensure a swift endpoint is"},{"line_number":178,"context_line":"   present in the service catalog (and reachable? version discovery?"},{"line_number":179,"context_line":"   implementation detail) so that a future unshelve doesn\u0027t break the instance."},{"line_number":180,"context_line":"#. Nova generates a random passphrase and stores it in the configured key"},{"line_number":181,"context_line":"   manager, yielding a UUID, hereinafter referred to as ``$secret_uuid``."},{"line_number":182,"context_line":"#. Nova saves the ``$secret_uuid`` in the instance\u0027s ``system_metadata`` under"},{"line_number":183,"context_line":"   key ``tpm_secret_uuid``."},{"line_number":184,"context_line":"#. Nova uses the ``virSecretDefineXML`` API to define a private (value can\u0027t be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_8874759e","line":181,"range":{"start_line":180,"start_character":0,"end_line":181,"end_character":73},"updated":"2020-05-22 16:05:52.000000000","message":"We should really ensure this is stored as a passphrase and not a async key as is currently the case with encrypted volumes. The last time I looked at this it wasn\u0027t possible but that may have changed now.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"#. Even though swift is not required for spawn, ensure a swift endpoint is"},{"line_number":178,"context_line":"   present in the service catalog (and reachable? version discovery?"},{"line_number":179,"context_line":"   implementation detail) so that a future unshelve doesn\u0027t break the instance."},{"line_number":180,"context_line":"#. Nova generates a random passphrase and stores it in the configured key"},{"line_number":181,"context_line":"   manager, yielding a UUID, hereinafter referred to as ``$secret_uuid``."},{"line_number":182,"context_line":"#. Nova saves the ``$secret_uuid`` in the instance\u0027s ``system_metadata`` under"},{"line_number":183,"context_line":"   key ``tpm_secret_uuid``."},{"line_number":184,"context_line":"#. Nova uses the ``virSecretDefineXML`` API to define a private (value can\u0027t be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_733730e5","line":181,"range":{"start_line":180,"start_character":0,"end_line":181,"end_character":73},"in_reply_to":"ff570b3c_8874759e","updated":"2020-05-26 12:48:55.000000000","message":"what is the difference between the storeing as a passphrase vs a key?","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   manager, yielding a UUID, hereinafter referred to as ``$secret_uuid``."},{"line_number":182,"context_line":"#. Nova saves the ``$secret_uuid`` in the instance\u0027s ``system_metadata`` under"},{"line_number":183,"context_line":"   key ``tpm_secret_uuid``."},{"line_number":184,"context_line":"#. Nova uses the ``virSecretDefineXML`` API to define a private (value can\u0027t be"},{"line_number":185,"context_line":"   listed), ephemeral (state is stored only in memory, never on disk) secret"},{"line_number":186,"context_line":"   whose ``name`` is the instance UUID, and whose UUID is the ``$secret_uuid``."},{"line_number":187,"context_line":"   The ``virSecretSetValue`` API is then used to set its value to the generated"},{"line_number":188,"context_line":"   passphrase."},{"line_number":189,"context_line":"#. Nova injects the XML_ into the instance\u0027s domain. The ``model`` and"},{"line_number":190,"context_line":"   ``version`` are gleaned from the flavor/image properties, and the ``secret``"},{"line_number":191,"context_line":"   is ``$secret_uuid``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_883595ab","line":188,"range":{"start_line":184,"start_character":0,"end_line":188,"end_character":14},"updated":"2020-05-22 16:05:52.000000000","message":"This already exists for encrypted volumes under nova.virt.libvirt.host.Host.create_secret you would just need to add support for a vtpm type.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":181,"context_line":"   manager, yielding a UUID, hereinafter referred to as ``$secret_uuid``."},{"line_number":182,"context_line":"#. Nova saves the ``$secret_uuid`` in the instance\u0027s ``system_metadata`` under"},{"line_number":183,"context_line":"   key ``tpm_secret_uuid``."},{"line_number":184,"context_line":"#. Nova uses the ``virSecretDefineXML`` API to define a private (value can\u0027t be"},{"line_number":185,"context_line":"   listed), ephemeral (state is stored only in memory, never on disk) secret"},{"line_number":186,"context_line":"   whose ``name`` is the instance UUID, and whose UUID is the ``$secret_uuid``."},{"line_number":187,"context_line":"   The ``virSecretSetValue`` API is then used to set its value to the generated"},{"line_number":188,"context_line":"   passphrase."},{"line_number":189,"context_line":"#. Nova injects the XML_ into the instance\u0027s domain. The ``model`` and"},{"line_number":190,"context_line":"   ``version`` are gleaned from the flavor/image properties, and the ``secret``"},{"line_number":191,"context_line":"   is ``$secret_uuid``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_f3798093","line":188,"range":{"start_line":184,"start_character":0,"end_line":188,"end_character":14},"in_reply_to":"ff570b3c_883595ab","updated":"2020-05-26 12:48:55.000000000","message":"i assume we are already using the private and ephmeral flags for the volume secret but  cool if we can reuse it we should.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":189,"context_line":"#. Nova injects the XML_ into the instance\u0027s domain. The ``model`` and"},{"line_number":190,"context_line":"   ``version`` are gleaned from the flavor/image properties, and the ``secret``"},{"line_number":191,"context_line":"   is ``$secret_uuid``."},{"line_number":192,"context_line":"#. Once libvirt has created the guest, nova uses the ``virSecretUndefine`` API"},{"line_number":193,"context_line":"   to delete the secret. The instance\u0027s emulated TPM continues to function."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note:: Spawning from an image created by snapshotting a VM with a vTPM will"},{"line_number":196,"context_line":"          result in a fresh, empty vTPM, even if that snapshot was created by"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_08f7c5d6","line":193,"range":{"start_line":192,"start_character":0,"end_line":193,"end_character":75},"updated":"2020-05-22 16:05:52.000000000","message":"I\u0027d have to confirm with the libvirt folks that we can actually do this, I know we don\u0027t for encrypted volumes at the moment but that could be something we need to address there.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":189,"context_line":"#. Nova injects the XML_ into the instance\u0027s domain. The ``model`` and"},{"line_number":190,"context_line":"   ``version`` are gleaned from the flavor/image properties, and the ``secret``"},{"line_number":191,"context_line":"   is ``$secret_uuid``."},{"line_number":192,"context_line":"#. Once libvirt has created the guest, nova uses the ``virSecretUndefine`` API"},{"line_number":193,"context_line":"   to delete the secret. The instance\u0027s emulated TPM continues to function."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":".. note:: Spawning from an image created by snapshotting a VM with a vTPM will"},{"line_number":196,"context_line":"          result in a fresh, empty vTPM, even if that snapshot was created by"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_93964494","line":193,"range":{"start_line":192,"start_character":0,"end_line":193,"end_character":75},"in_reply_to":"ff570b3c_08f7c5d6","updated":"2020-05-26 12:48:55.000000000","message":"this is semi optional in that since the key is marked as private and ephemeral it is never saved to disk and cant be retrieved via virsh anyway so its not strictly require but i think this is already implemented in the poc code that is already available. we could skip this if its not supported with little decresase is security although ideally we should keep the key in memory for as little time as possible.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":369,"context_line":"  vTPM, create a fresh one, just like Spawn_."},{"line_number":370,"context_line":"* If there is an existing vTPM and neither the flavor nor the image asks for"},{"line_number":371,"context_line":"  one, delete it."},{"line_number":372,"context_line":"* If there is an existing vTPM and the flavor or image asks for one, leave the"},{"line_number":373,"context_line":"  backing file alone. However, if different versions/models are requested by"},{"line_number":374,"context_line":"  the old and new image in combination with the flavor, we will fail the"},{"line_number":375,"context_line":"  rebuild."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Evacuate"},{"line_number":378,"context_line":"~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_68e001ce","line":375,"range":{"start_line":372,"start_character":0,"end_line":375,"end_character":10},"updated":"2020-05-22 16:05:52.000000000","message":"I don\u0027t understand this, wouldn\u0027t we always want a fresh vTPM in this case?","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":369,"context_line":"  vTPM, create a fresh one, just like Spawn_."},{"line_number":370,"context_line":"* If there is an existing vTPM and neither the flavor nor the image asks for"},{"line_number":371,"context_line":"  one, delete it."},{"line_number":372,"context_line":"* If there is an existing vTPM and the flavor or image asks for one, leave the"},{"line_number":373,"context_line":"  backing file alone. However, if different versions/models are requested by"},{"line_number":374,"context_line":"  the old and new image in combination with the flavor, we will fail the"},{"line_number":375,"context_line":"  rebuild."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Evacuate"},{"line_number":378,"context_line":"~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_736f3092","line":375,"range":{"start_line":372,"start_character":0,"end_line":375,"end_character":10},"in_reply_to":"ff570b3c_68e001ce","updated":"2020-05-26 12:48:55.000000000","message":"we want to mirror what happens on a real physical machine.\n\na rebuild is just a reinstall or the os driver.\non a real machie the tpm data would be preserved and available to the newly reinstalled OS image enabling rebuild to be used to perfrome software updates which is common for VNF. so we should not in general just recarate the vTPM on rebuild.\n\nif the vTPM changes type then it would be valid if to recreate it if and only if the vtpm version was perviously specified in the image.\n\nif the vTPM version was specifced in the falvor and the new image now confilct that should be an error.\n\nso \"if different versions/models are requested by\n  the old and new image in combination with the flavor, we will fail the\n  rebuild.\" i think is refering to that conflict case.\nwhich should be an error.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"77e0e6472021fc104d8326c1252e09d416693721","unresolved":false,"context_lines":[{"line_number":383,"context_line":"TPM is left behind even if the rest of the state is resurrected on another"},{"line_number":384,"context_line":"system via shared storage."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"(It may be possible to mitigate this by mounting ``/var/lib/libvirt/swtpm/`` on"},{"line_number":387,"context_line":"shared storage, though libvirt\u0027s management of that directory on guest"},{"line_number":388,"context_line":"creation/teardown may stymie such attempts. This would also bring in additional"},{"line_number":389,"context_line":"security concerns. In any case, it would be an exercise for the admin; nothing"},{"line_number":390,"context_line":"will be done in nova to support or prevent it.)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"Destroy"},{"line_number":393,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_48f25d9c","line":390,"range":{"start_line":386,"start_character":0,"end_line":390,"end_character":47},"updated":"2020-05-22 16:05:52.000000000","message":"*In before we get a volume based vTPM request*","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2752eb5eb182c7a700a21cfdde0f4f7c9dace2c6","unresolved":false,"context_lines":[{"line_number":383,"context_line":"TPM is left behind even if the rest of the state is resurrected on another"},{"line_number":384,"context_line":"system via shared storage."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"(It may be possible to mitigate this by mounting ``/var/lib/libvirt/swtpm/`` on"},{"line_number":387,"context_line":"shared storage, though libvirt\u0027s management of that directory on guest"},{"line_number":388,"context_line":"creation/teardown may stymie such attempts. This would also bring in additional"},{"line_number":389,"context_line":"security concerns. In any case, it would be an exercise for the admin; nothing"},{"line_number":390,"context_line":"will be done in nova to support or prevent it.)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"Destroy"},{"line_number":393,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff570b3c_731d700e","line":390,"range":{"start_line":386,"start_character":0,"end_line":390,"end_character":47},"in_reply_to":"ff570b3c_48f25d9c","updated":"2020-05-26 12:48:55.000000000","message":"ya i tought of that but the minium volume size is 1G and the tpm normally has is of the order of KBs to low MBs of data which would be redicually overkill to back by a 1GB volume so ya that will not be a thing.","commit_id":"9673728c387036c4568bf053ba4c5e91c929113e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb824a4346d966170c7c7a4931475f37e2926a25","unresolved":false,"context_lines":[{"line_number":610,"context_line":"  stephenfin"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"Other contributors:"},{"line_number":613,"context_line":"  cfriesen"},{"line_number":614,"context_line":"  efried"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"Feature Liaison"},{"line_number":617,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff570b3c_0eee868a","line":614,"range":{"start_line":613,"start_character":0,"end_line":614,"end_character":8},"updated":"2020-06-10 14:57:49.000000000","message":"hmmm, are you sure about both of them ? :-)","commit_id":"97f088befb82f5bbbc433727b8754bb278ac7d8e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"567d55955c0324bd3393b7c3c7f52f97616de43a","unresolved":false,"context_lines":[{"line_number":610,"context_line":"  stephenfin"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"Other contributors:"},{"line_number":613,"context_line":"  cfriesen"},{"line_number":614,"context_line":"  efried"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"Feature Liaison"},{"line_number":617,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff570b3c_c1a9ff24","line":614,"range":{"start_line":613,"start_character":0,"end_line":614,"end_character":8},"in_reply_to":"ff570b3c_0eee868a","updated":"2020-06-10 15:40:10.000000000","message":"I\u0027m okay with this. A substantial percentage of the existing design and code was contributed by these folks.","commit_id":"97f088befb82f5bbbc433727b8754bb278ac7d8e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fb824a4346d966170c7c7a4931475f37e2926a25","unresolved":false,"context_lines":[{"line_number":690,"context_line":"   * - Ussuri"},{"line_number":691,"context_line":"     - Re-proposed with refinements including encryption pieces"},{"line_number":692,"context_line":"   * - Victoria"},{"line_number":693,"context_line":"     - Re-proposed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ff570b3c_cefbee44","line":693,"updated":"2020-06-10 14:57:49.000000000","message":"FWIW I don\u0027t see any changes in between Ussuri approved spec and this one.","commit_id":"97f088befb82f5bbbc433727b8754bb278ac7d8e"}]}
