)]}'
{"nova/objects/fields.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a8791c4bcba2f692606eb86fdee6ec371dd875a8","unresolved":false,"context_lines":[{"line_number":515,"context_line":"    TIS \u003d \"tpm-tis\""},{"line_number":516,"context_line":"    CRB \u003d \"tpm-crb\""},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    ALL \u003d (TIS, CRB)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class TPMVersion(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_5213cd66","line":518,"updated":"2020-07-23 15:37:56.000000000","message":"Choosing to have models as Enum has upgrade implications.\n\nSince adding a new supported model wouldn\u0027t require an object version bump, clients of such object absolutely need to ensure that if they get something they don\u0027t know, they can still handle this.\n\nIf we just use the object as a proxy mechanism down from the API to libvirt, this doesn\u0027t sound a concern but I need to go deep in reviewing for reviewing such thing.","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0a034665f0587b0102ce821d5ba5ac45c7dbe43f","unresolved":false,"context_lines":[{"line_number":515,"context_line":"    TIS \u003d \"tpm-tis\""},{"line_number":516,"context_line":"    CRB \u003d \"tpm-crb\""},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    ALL \u003d (TIS, CRB)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class TPMVersion(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_2bfdfc3a","line":518,"in_reply_to":"bf51134e_4bd950f2","updated":"2020-07-24 08:44:56.000000000","message":"all hail the good test!","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"283dd1502f20f90fa697b3407ddc62ec1e426e4e","unresolved":false,"context_lines":[{"line_number":515,"context_line":"    TIS \u003d \"tpm-tis\""},{"line_number":516,"context_line":"    CRB \u003d \"tpm-crb\""},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    ALL \u003d (TIS, CRB)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class TPMVersion(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_8dad4aec","line":518,"in_reply_to":"bf51134e_5213cd66","updated":"2020-07-23 16:05:07.000000000","message":"If we added a new value to this enum, we would have to increase the version number of any object that used this. We have prior art for this, such as [1].\n\n[1] https://github.com/openstack/nova/blob/da155cb495/nova/objects/instance_numa.py#L47-L52","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"478f373b708702c78e842a15d1539027a1eaaab9","unresolved":false,"context_lines":[{"line_number":515,"context_line":"    TIS \u003d \"tpm-tis\""},{"line_number":516,"context_line":"    CRB \u003d \"tpm-crb\""},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    ALL \u003d (TIS, CRB)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class TPMVersion(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_98c8dc74","line":518,"in_reply_to":"bf51134e_8dad4aec","updated":"2020-07-24 07:26:11.000000000","message":"Fair point, just hoping people will remember this concern :-)","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a996716e480d06536a39d6ddd7e6c03b79f2c97","unresolved":false,"context_lines":[{"line_number":515,"context_line":"    TIS \u003d \"tpm-tis\""},{"line_number":516,"context_line":"    CRB \u003d \"tpm-crb\""},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"    ALL \u003d (TIS, CRB)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class TPMVersion(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_4bd950f2","line":518,"in_reply_to":"bf51134e_98c8dc74","updated":"2020-07-24 08:42:59.000000000","message":"To be clear, we\u0027ll *have* to do this version bump. The test_objects test won\u0027t let us do it any other way :)","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a8791c4bcba2f692606eb86fdee6ec371dd875a8","unresolved":false,"context_lines":[{"line_number":522,"context_line":"    v1_2 \u003d \"1.2\""},{"line_number":523,"context_line":"    v2_0 \u003d \"2.0\""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"    ALL \u003d (v1_2, v2_0)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"class SCSIModel(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_d206bd20","line":525,"updated":"2020-07-23 15:37:56.000000000","message":"again, same concern here. This makes upgrades simplier, to the trade-off of managing tpm versions directly by the callers.","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"283dd1502f20f90fa697b3407ddc62ec1e426e4e","unresolved":false,"context_lines":[{"line_number":522,"context_line":"    v1_2 \u003d \"1.2\""},{"line_number":523,"context_line":"    v2_0 \u003d \"2.0\""},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"    ALL \u003d (v1_2, v2_0)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"class SCSIModel(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_cdb7423a","line":525,"in_reply_to":"bf51134e_d206bd20","updated":"2020-07-23 16:05:07.000000000","message":"As above","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"}],"nova/scheduler/utils.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a8791c4bcba2f692606eb86fdee6ec371dd875a8","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if vtpm_config.version \u003d\u003d obj_fields.TPMVersion.v1_2:"},{"line_number":225,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_1_2"},{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_2_0"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        self._add_trait(None, trait, \"required\")"},{"line_number":230,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s.\", trait)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_cd1bc270","line":227,"updated":"2020-07-23 15:37:56.000000000","message":"that\u0027s the exact upgrade concern I mentioned.\n\nAnd this is made in scheduler.utils which can be used in both compute and controller services, good luck with handling it.\n\nFrom what I can see, we only call this method when we want to amend the ResourceRequest so all of this is made on the API side.","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"478f373b708702c78e842a15d1539027a1eaaab9","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if vtpm_config.version \u003d\u003d obj_fields.TPMVersion.v1_2:"},{"line_number":225,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_1_2"},{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_2_0"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        self._add_trait(None, trait, \"required\")"},{"line_number":230,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s.\", trait)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_b8a200ac","line":227,"in_reply_to":"bf51134e_4d34d24a","updated":"2020-07-24 07:26:11.000000000","message":"You\u0027re right","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"283dd1502f20f90fa697b3407ddc62ec1e426e4e","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        if vtpm_config.version \u003d\u003d obj_fields.TPMVersion.v1_2:"},{"line_number":225,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_1_2"},{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_2_0"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        self._add_trait(None, trait, \"required\")"},{"line_number":230,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s.\", trait)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_4d34d24a","line":227,"in_reply_to":"bf51134e_cd1bc270","updated":"2020-07-23 16:05:07.000000000","message":"We\u0027ll never get here with an invalid value. \u0027get_vtpm_constraint\u0027 takes care of validation.","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ae9489442bcdd2583d30930b958f1e30a93d8272","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_2_0"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        self._add_trait(None, trait, \"required\")"},{"line_number":230,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s.\", trait)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _translate_memory_encryption(self, flavor, image):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_26370350","line":229,"range":{"start_line":229,"start_character":24,"end_line":229,"end_character":28},"updated":"2020-07-23 11:31:16.000000000","message":"Not related to this change really but this is pretty confusing but already widely used, I wonder if there\u0027s a better way of expressing that we want to add the trait to the unsuffixed request group?","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9697da8da8d16621b35ce80aa351d00ad3e181d1","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_2_0"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        self._add_trait(None, trait, \"required\")"},{"line_number":230,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s.\", trait)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _translate_memory_encryption(self, flavor, image):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_79ad1ce9","line":229,"range":{"start_line":229,"start_character":24,"end_line":229,"end_character":28},"in_reply_to":"bf51134e_26370350","updated":"2020-07-23 11:57:58.000000000","message":"We should probably change the order of parameters so that group is an optional parameter. Good follow-up","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a8791c4bcba2f692606eb86fdee6ec371dd875a8","unresolved":false,"context_lines":[{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            trait \u003d os_traits.COMPUTE_SECURITY_TPM_2_0"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        self._add_trait(None, trait, \"required\")"},{"line_number":230,"context_line":"        LOG.debug(\"Requiring emulated TPM support via trait %s.\", trait)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _translate_memory_encryption(self, flavor, image):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_2d0b5e24","line":229,"range":{"start_line":229,"start_character":24,"end_line":229,"end_character":28},"in_reply_to":"bf51134e_79ad1ce9","updated":"2020-07-23 15:37:56.000000000","message":"Yeah, this unfortunately needs to be addressed as another change.","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"}],"nova/tests/unit/objects/test_image_meta.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e640ed292494506ed884824793b173f3f208517a","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        self.assertIn(\u0027hw_tpm_model\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":422,"context_line":"        self.assertIn(\u0027hw_tpm_version\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        primitive \u003d obj.obj_to_primitive(\u00271.25\u0027)"},{"line_number":425,"context_line":"        self.assertNotIn(\u0027hw_tpm_model\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":426,"context_line":"        self.assertNotIn(\u0027hw_tpm_version\u0027, primitive[\u0027nova_object.data\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_46983769","line":424,"range":{"start_line":424,"start_character":44,"end_line":424,"end_character":46},"updated":"2020-07-23 11:16:16.000000000","message":"26","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"478f373b708702c78e842a15d1539027a1eaaab9","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        self.assertIn(\u0027hw_tpm_model\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":422,"context_line":"        self.assertIn(\u0027hw_tpm_version\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        primitive \u003d obj.obj_to_primitive(\u00271.25\u0027)"},{"line_number":425,"context_line":"        self.assertNotIn(\u0027hw_tpm_model\u0027, primitive[\u0027nova_object.data\u0027])"},{"line_number":426,"context_line":"        self.assertNotIn(\u0027hw_tpm_version\u0027, primitive[\u0027nova_object.data\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_989d7c68","line":424,"range":{"start_line":424,"start_character":44,"end_line":424,"end_character":46},"in_reply_to":"bf51134e_46983769","updated":"2020-07-24 07:26:11.000000000","message":"A-ha, good point, it should ideally be 26, but the unittest is still good. Nit for a FUP then.","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"}],"nova/virt/hardware.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"478f373b708702c78e842a15d1539027a1eaaab9","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"    flavor: \u0027objects.Flavor\u0027,"},{"line_number":1183,"context_line":"    image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":1184,"context_line":"    default: ty.Any \u003d None"},{"line_number":1185,"context_line":") -\u003e ty.Any:"},{"line_number":1186,"context_line":"    \"\"\"A variant of \u0027_get_flavor_image_meta\u0027 that errors out on conflicts.\"\"\""},{"line_number":1187,"context_line":"    flavor_value, image_value \u003d _get_flavor_image_meta("},{"line_number":1188,"context_line":"        key, flavor, image_meta, default,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_587c841f","line":1185,"range":{"start_line":1185,"start_character":1,"end_line":1185,"end_character":12},"updated":"2020-07-24 07:26:11.000000000","message":":-) \n\nHonestly, was it really important to add this if you say \"meh, any object is returned\" ?","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d0d60f67b3fde19c901fec6e2060cfab6b90f9e2","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"    flavor: \u0027objects.Flavor\u0027,"},{"line_number":1183,"context_line":"    image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":1184,"context_line":"    default: ty.Any \u003d None"},{"line_number":1185,"context_line":") -\u003e ty.Any:"},{"line_number":1186,"context_line":"    \"\"\"A variant of \u0027_get_flavor_image_meta\u0027 that errors out on conflicts.\"\"\""},{"line_number":1187,"context_line":"    flavor_value, image_value \u003d _get_flavor_image_meta("},{"line_number":1188,"context_line":"        key, flavor, image_meta, default,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf51134e_0b5bd886","line":1185,"range":{"start_line":1185,"start_character":1,"end_line":1185,"end_character":12},"in_reply_to":"bf51134e_587c841f","updated":"2020-07-24 08:40:24.000000000","message":"I did try to be more specific about this, but unfortunately the individual fields of ImageMetaProps objects [1] have many different types: IntegerField, StringField, FlexibleBooleanField, etc. This made things very difficult to type :( We\u0027d most likely have to get rid of these generic helper functions if we wanted to annotate the callers\n\n[1] https://github.com/openstack/nova/blob/master/nova/objects/image_meta.py","commit_id":"5550f866237157e82cad8c6146b486c62f35a0d8"}]}
