)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"928a53f3a8f626ca1ff600c7ca7cd5a0e18980b2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds configurable functionality which"},{"line_number":10,"context_line":"verifies Glance signatures associated with base"},{"line_number":11,"context_line":"images stored in the libvirt driver\u0027s image cache."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I0c46874a71f8ddc64e64fe6225231dc9f5744c7f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bab6814e_7da4bc07","line":12,"updated":"2016-05-24 14:10:41.000000000","message":"You need to reference the bp here.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"}],"nova/virt/libvirt/imagecache.py":[{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"2f1743fa26575a5241e757583fb41ef1aec57119","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            \u0027img_signature_certificate_uuid\u0027"},{"line_number":365,"context_line":"        )"},{"line_number":366,"context_line":"        img_sig_key_type \u003d image_meta.properties.get("},{"line_number":367,"context_line":"            \u0027img_signature_key_type\u0027"},{"line_number":368,"context_line":"        )"},{"line_number":369,"context_line":"        try:"},{"line_number":370,"context_line":"            lock_name \u003d \u0027hash-%s\u0027 % os.path.split(base_file)[-1]"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_e05af580","line":367,"range":{"start_line":367,"start_character":13,"end_line":367,"end_character":35},"updated":"2016-05-17 23:32:52.000000000","message":"Are there values stored in variables in glance that you could use here instead?","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b272e207bc22ee0d0b5a28386afd9b4ba154a3fd","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            \u0027img_signature_certificate_uuid\u0027"},{"line_number":365,"context_line":"        )"},{"line_number":366,"context_line":"        img_sig_key_type \u003d image_meta.properties.get("},{"line_number":367,"context_line":"            \u0027img_signature_key_type\u0027"},{"line_number":368,"context_line":"        )"},{"line_number":369,"context_line":"        try:"},{"line_number":370,"context_line":"            lock_name \u003d \u0027hash-%s\u0027 % os.path.split(base_file)[-1]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_304fb9be","line":367,"range":{"start_line":367,"start_character":13,"end_line":367,"end_character":35},"in_reply_to":"bab6814e_6c17ff51","updated":"2016-05-25 14:34:31.000000000","message":"Agree. Later cleanup would be good.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"b0116fde86b1e00d92c346ac3bc54980d471d092","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            \u0027img_signature_certificate_uuid\u0027"},{"line_number":365,"context_line":"        )"},{"line_number":366,"context_line":"        img_sig_key_type \u003d image_meta.properties.get("},{"line_number":367,"context_line":"            \u0027img_signature_key_type\u0027"},{"line_number":368,"context_line":"        )"},{"line_number":369,"context_line":"        try:"},{"line_number":370,"context_line":"            lock_name \u003d \u0027hash-%s\u0027 % os.path.split(base_file)[-1]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_8b2f2587","line":367,"range":{"start_line":367,"start_character":13,"end_line":367,"end_character":35},"in_reply_to":"bab6814e_6c17ff51","updated":"2016-05-20 14:42:58.000000000","message":"Got it.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"1584c1189f2cc5514891a8d7353760c4ce8f53f4","unresolved":false,"context_lines":[{"line_number":364,"context_line":"            \u0027img_signature_certificate_uuid\u0027"},{"line_number":365,"context_line":"        )"},{"line_number":366,"context_line":"        img_sig_key_type \u003d image_meta.properties.get("},{"line_number":367,"context_line":"            \u0027img_signature_key_type\u0027"},{"line_number":368,"context_line":"        )"},{"line_number":369,"context_line":"        try:"},{"line_number":370,"context_line":"            lock_name \u003d \u0027hash-%s\u0027 % os.path.split(base_file)[-1]"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_6c17ff51","line":367,"range":{"start_line":367,"start_character":13,"end_line":367,"end_character":35},"in_reply_to":"dab17558_e05af580","updated":"2016-05-18 13:31:41.000000000","message":"Not in glance, but the signature metadata properties are listed in the signature_utils module. Unfortunately, they aren\u0027t exposed outside of the module. The above code is basically identical to the way we retrieve the signature metadata properties in nova/glance/image.py. This perhaps merits a cleanup, since it\u0027s admittedly a bit clumsy, but I think it should be done in a separate patch.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b272e207bc22ee0d0b5a28386afd9b4ba154a3fd","unresolved":false,"context_lines":[{"line_number":744,"context_line":"        self._age_and_verify_swap_images(context, base_dir)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # remove images that fail verification"},{"line_number":747,"context_line":"        if CONF.libvirt.verify_cache_signatures:"},{"line_number":748,"context_line":"            self._remove_corrupt_base_files()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_b099e970","line":747,"updated":"2016-05-25 14:34:31.000000000","message":"Suggestion: Inline this check at the beginning of _remove_corrupt_base_files.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"2f1743fa26575a5241e757583fb41ef1aec57119","unresolved":false,"context_lines":[{"line_number":744,"context_line":"        self._age_and_verify_swap_images(context, base_dir)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # remove images that fail verification"},{"line_number":747,"context_line":"        if CONF.libvirt.verify_cache_signatures:"},{"line_number":748,"context_line":"            self._remove_corrupt_base_files()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dab17558_9b627cab","line":748,"range":{"start_line":747,"start_character":8,"end_line":748,"end_character":45},"updated":"2016-05-17 23:32:52.000000000","message":"What happens if a corrupt base file is in use?  We just want to delete it?","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"b0116fde86b1e00d92c346ac3bc54980d471d092","unresolved":false,"context_lines":[{"line_number":744,"context_line":"        self._age_and_verify_swap_images(context, base_dir)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # remove images that fail verification"},{"line_number":747,"context_line":"        if CONF.libvirt.verify_cache_signatures:"},{"line_number":748,"context_line":"            self._remove_corrupt_base_files()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_2b1ef95e","line":748,"range":{"start_line":747,"start_character":8,"end_line":748,"end_character":45},"in_reply_to":"bab6814e_af3ef9b5","updated":"2016-05-20 14:42:58.000000000","message":"Ok, thanks for the explanation, that makes sense.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"1584c1189f2cc5514891a8d7353760c4ce8f53f4","unresolved":false,"context_lines":[{"line_number":744,"context_line":"        self._age_and_verify_swap_images(context, base_dir)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        # remove images that fail verification"},{"line_number":747,"context_line":"        if CONF.libvirt.verify_cache_signatures:"},{"line_number":748,"context_line":"            self._remove_corrupt_base_files()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bab6814e_af3ef9b5","line":748,"range":{"start_line":747,"start_character":8,"end_line":748,"end_character":45},"in_reply_to":"dab17558_9b627cab","updated":"2016-05-18 13:31:41.000000000","message":"The ImageCacheManager keeps track of which images are being used by running instances in order to increase the probability of a cache hit the next time an instance is booted. As far as I can tell, after the instances are running, they no longer need the base_file, so deleting the base_file has no effect on the running instance. If we\u0027re being security-conscious, we should delete images as soon as they fail signature verification, right? If I\u0027ve made any incorrect assumptions, please let me know.","commit_id":"8a50ec1dda21810be99c1fb4b45b0cea34a6cad3"}]}
