)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"75b1ee557f36db268d6a9b3c7d42f18fc32a74a6","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8179282a9d19f829aca0b5bd2775d855b3364c86"},{"line_number":14,"context_line":"Depends-On: Ic3ffb6b318dc2ac6c9d3a60bed5198fd4d40e318"},{"line_number":15,"context_line":"Partial-Bug: #1528349"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1ac06dbe_84e11601","line":15,"updated":"2016-08-22 14:40:29.000000000","message":"There should be a blueprint line:\n\nImplements: blueprint signature-code-cleanup","commit_id":"77015560e25e1c0cd28f0c78b3b7ae8fb8598ca3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"074441af3a8251fcada754732965fe30fcc64b54","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8179282a9d19f829aca0b5bd2775d855b3364c86"},{"line_number":14,"context_line":"Depends-On: Ic3ffb6b318dc2ac6c9d3a60bed5198fd4d40e318"},{"line_number":15,"context_line":"Partial-Bug: #1528349"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a89bdaa_9fb78a85","line":15,"in_reply_to":"1ac06dbe_84e11601","updated":"2016-09-06 14:09:02.000000000","message":"Done","commit_id":"77015560e25e1c0cd28f0c78b3b7ae8fb8598ca3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26d9dbe9f98dc3c134d6e7a652bbc6d37f64af92","unresolved":false,"context_lines":[{"line_number":11,"context_line":"contains an identical module."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8179282a9d19f829aca0b5bd2775d855b3364c86"},{"line_number":14,"context_line":"Implements: blueprint signature-code-cleanup"},{"line_number":15,"context_line":"Partial-Bug: #1528349"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a1ff146_644d1172","line":14,"updated":"2017-03-15 15:43:22.000000000","message":"Oh I guess we still need to officially approve this...","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9be7f7b574f4f312de61ebef7b0ca01bdefcfa42","unresolved":false,"context_lines":[{"line_number":11,"context_line":"contains an identical module."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8179282a9d19f829aca0b5bd2775d855b3364c86"},{"line_number":14,"context_line":"Implements: blueprint signature-code-cleanup"},{"line_number":15,"context_line":"Partial-Bug: #1528349"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a1ff146_e472e17b","line":14,"in_reply_to":"3a1ff146_644d1172","updated":"2017-03-15 15:57:41.000000000","message":"Approved now.","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"}],"nova/compute/manager.py":[{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"75b1ee557f36db268d6a9b3c7d42f18fc32a74a6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"import uuid"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from cinderclient import exceptions as cinder_exception"},{"line_number":39,"context_line":"import cursive"},{"line_number":40,"context_line":"import eventlet.event"},{"line_number":41,"context_line":"from eventlet import greenthread"},{"line_number":42,"context_line":"import eventlet.semaphore"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_2478222a","line":39,"updated":"2016-08-22 14:40:29.000000000","message":"This should be modified to be:\n\nfrom cursive import exception as cursive_exception","commit_id":"77015560e25e1c0cd28f0c78b3b7ae8fb8598ca3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"074441af3a8251fcada754732965fe30fcc64b54","unresolved":false,"context_lines":[{"line_number":36,"context_line":"import uuid"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from cinderclient import exceptions as cinder_exception"},{"line_number":39,"context_line":"import cursive"},{"line_number":40,"context_line":"import eventlet.event"},{"line_number":41,"context_line":"from eventlet import greenthread"},{"line_number":42,"context_line":"import eventlet.semaphore"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_dfb11291","line":39,"in_reply_to":"1ac06dbe_2478222a","updated":"2016-09-06 14:09:02.000000000","message":"Done","commit_id":"77015560e25e1c0cd28f0c78b3b7ae8fb8598ca3"}],"nova/image/glance.py":[{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"3e61ec9dd6458fbf8ec53e11c7a40e51e234cf40","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cryptography"},{"line_number":28,"context_line":"import cursive"},{"line_number":29,"context_line":"from cursive import signature_utils"},{"line_number":30,"context_line":"from eventlet import greenthread"},{"line_number":31,"context_line":"import glanceclient"},{"line_number":32,"context_line":"import glanceclient.exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_a93852ef","line":29,"updated":"2016-08-04 16:41:40.000000000","message":"Should both of these lines be here?","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"8366b3d26ac622e91203da885f098c6d5d4c29c6","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cryptography"},{"line_number":28,"context_line":"import cursive"},{"line_number":29,"context_line":"from cursive import signature_utils"},{"line_number":30,"context_line":"from eventlet import greenthread"},{"line_number":31,"context_line":"import glanceclient"},{"line_number":32,"context_line":"import glanceclient.exc"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_eaad19ea","line":29,"in_reply_to":"bacf61ea_a93852ef","updated":"2016-08-04 17:03:30.000000000","message":"Done","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"eb03f6aadc90841e9fde0d469be3fe7c7bf41f84","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                    img_sig_cert_uuid,"},{"line_number":329,"context_line":"                    img_sig_hash_method,"},{"line_number":330,"context_line":"                    img_signature,"},{"line_number":331,"context_line":"                    img_sig_key_type"},{"line_number":332,"context_line":"                )"},{"line_number":333,"context_line":"            except cursive.exception.SignatureVerificationError:"},{"line_number":334,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_4a4c25c8","line":331,"updated":"2016-08-04 17:17:20.000000000","message":"In layouts like this, where I put the closing parenthesis on a line by itself, I like to leave a trailing comma after the last function argument.  It\u0027s purely a stylistic thing, though, so feel free to ignore this comment :)","commit_id":"5ba45a8e2d1e404fd3445e768e5129d1dd32099b"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"75b1ee557f36db268d6a9b3c7d42f18fc32a74a6","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import time"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cryptography"},{"line_number":28,"context_line":"import cursive"},{"line_number":29,"context_line":"from eventlet import greenthread"},{"line_number":30,"context_line":"import glanceclient"},{"line_number":31,"context_line":"import glanceclient.exc"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_a4b1b2e3","line":28,"updated":"2016-08-22 14:40:29.000000000","message":"This should also be a more specific imports for signature_utils and exception.","commit_id":"77015560e25e1c0cd28f0c78b3b7ae8fb8598ca3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"074441af3a8251fcada754732965fe30fcc64b54","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import time"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import cryptography"},{"line_number":28,"context_line":"import cursive"},{"line_number":29,"context_line":"from eventlet import greenthread"},{"line_number":30,"context_line":"import glanceclient"},{"line_number":31,"context_line":"import glanceclient.exc"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_1fac5a33","line":28,"in_reply_to":"1ac06dbe_a4b1b2e3","updated":"2016-09-06 14:09:02.000000000","message":"Done","commit_id":"77015560e25e1c0cd28f0c78b3b7ae8fb8598ca3"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"0f24053879d424e031191e712e7d0f7cb05218b1","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                    img_sig_cert_uuid,"},{"line_number":330,"context_line":"                    img_sig_hash_method,"},{"line_number":331,"context_line":"                    img_signature,"},{"line_number":332,"context_line":"                    img_sig_key_type,"},{"line_number":333,"context_line":"                )"},{"line_number":334,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":335,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_2f067e20","line":332,"updated":"2016-09-09 18:07:57.000000000","message":"Should we use named arguments here?","commit_id":"4770087e6ca3b7981727937d51ed4e84e18fde1c"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"208c591f086147b0af4d75153f5dd3993d4c569a","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            )"},{"line_number":326,"context_line":"            try:"},{"line_number":327,"context_line":"                verifier \u003d signature_utils.get_verifier("},{"line_number":328,"context_line":"                    context,"},{"line_number":329,"context_line":"                    img_sig_cert_uuid,"},{"line_number":330,"context_line":"                    img_sig_hash_method,"},{"line_number":331,"context_line":"                    img_signature,"},{"line_number":332,"context_line":"                    img_sig_key_type,"},{"line_number":333,"context_line":"                )"},{"line_number":334,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":335,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_6db748d8","line":332,"range":{"start_line":328,"start_character":20,"end_line":332,"end_character":37},"updated":"2016-09-21 16:44:20.000000000","message":"While this my preferred indentation style, unnecessary whitespace changes like this don\u0027t usually succeed at being merged. What prompted you to change the formatting?","commit_id":"4770087e6ca3b7981727937d51ed4e84e18fde1c"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"2875249601450fe0bcaf8b5210960ac366283a8a","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            )"},{"line_number":326,"context_line":"            try:"},{"line_number":327,"context_line":"                verifier \u003d signature_utils.get_verifier("},{"line_number":328,"context_line":"                    context,"},{"line_number":329,"context_line":"                    img_sig_cert_uuid,"},{"line_number":330,"context_line":"                    img_sig_hash_method,"},{"line_number":331,"context_line":"                    img_signature,"},{"line_number":332,"context_line":"                    img_sig_key_type,"},{"line_number":333,"context_line":"                )"},{"line_number":334,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":335,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_9271100f","line":332,"range":{"start_line":328,"start_character":20,"end_line":332,"end_character":37},"in_reply_to":"7a8ec9b2_6db748d8","updated":"2016-09-21 16:59:56.000000000","message":"I believe that line 327 originally read cursive.signature_utils.get_verifier, so having context inline exceeded the 80 character limit.","commit_id":"4770087e6ca3b7981727937d51ed4e84e18fde1c"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"95b7a95f2c0d304bd361483cf1e6fc3994536cb7","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                    img_sig_cert_uuid,"},{"line_number":330,"context_line":"                    img_sig_hash_method,"},{"line_number":331,"context_line":"                    img_signature,"},{"line_number":332,"context_line":"                    img_sig_key_type,"},{"line_number":333,"context_line":"                )"},{"line_number":334,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":335,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_0e4500b2","line":332,"in_reply_to":"9a89bdaa_2f067e20","updated":"2016-09-12 12:40:02.000000000","message":"Done","commit_id":"4770087e6ca3b7981727937d51ed4e84e18fde1c"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"0f24053879d424e031191e712e7d0f7cb05218b1","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                    img_sig_cert_uuid,"},{"line_number":564,"context_line":"                    img_sig_hash_method,"},{"line_number":565,"context_line":"                    img_signature,"},{"line_number":566,"context_line":"                    img_sig_key_type,"},{"line_number":567,"context_line":"                )"},{"line_number":568,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":569,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_aa08bc29","line":566,"updated":"2016-09-09 18:07:57.000000000","message":"Here as well?","commit_id":"4770087e6ca3b7981727937d51ed4e84e18fde1c"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"95b7a95f2c0d304bd361483cf1e6fc3994536cb7","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                    img_sig_cert_uuid,"},{"line_number":564,"context_line":"                    img_sig_hash_method,"},{"line_number":565,"context_line":"                    img_signature,"},{"line_number":566,"context_line":"                    img_sig_key_type,"},{"line_number":567,"context_line":"                )"},{"line_number":568,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":569,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_2e12c4b4","line":566,"in_reply_to":"9a89bdaa_aa08bc29","updated":"2016-09-12 12:40:02.000000000","message":"Done","commit_id":"4770087e6ca3b7981727937d51ed4e84e18fde1c"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"2df3f15022b52b8707de0b9173889f0503bd826d","unresolved":false,"context_lines":[{"line_number":559,"context_line":"            )"},{"line_number":560,"context_line":"            try:"},{"line_number":561,"context_line":"                verifier \u003d signature_utils.get_verifier("},{"line_number":562,"context_line":"                    context\u003dcontext,"},{"line_number":563,"context_line":"                    image_signature_certificate_uuid\u003dimg_sig_cert_uuid,"},{"line_number":564,"context_line":"                    image_signature_hash_method\u003dimg_sig_hash_method,"},{"line_number":565,"context_line":"                    image_signature\u003dimg_signature,"},{"line_number":566,"context_line":"                    image_signature_key_type\u003dimg_sig_key_type,"},{"line_number":567,"context_line":"                )"},{"line_number":568,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":569,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_ed97d88d","line":566,"range":{"start_line":562,"start_character":16,"end_line":566,"end_character":62},"updated":"2016-09-21 16:45:03.000000000","message":"Perhaps neither here nor there, but I find the use of keyword arguments less readable in this particular case. It\u0027s also adding unnecessary noise/churn to this review without any clear benefits.","commit_id":"5179ddd158da678111d895348be8659d6ac14797"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9f76f4f9255572e50d0668bf59eac0f66380766b","unresolved":false,"context_lines":[{"line_number":559,"context_line":"            )"},{"line_number":560,"context_line":"            try:"},{"line_number":561,"context_line":"                verifier \u003d signature_utils.get_verifier("},{"line_number":562,"context_line":"                    context\u003dcontext,"},{"line_number":563,"context_line":"                    image_signature_certificate_uuid\u003dimg_sig_cert_uuid,"},{"line_number":564,"context_line":"                    image_signature_hash_method\u003dimg_sig_hash_method,"},{"line_number":565,"context_line":"                    image_signature\u003dimg_signature,"},{"line_number":566,"context_line":"                    image_signature_key_type\u003dimg_sig_key_type,"},{"line_number":567,"context_line":"                )"},{"line_number":568,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":569,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_f4378ead","line":566,"range":{"start_line":562,"start_character":16,"end_line":566,"end_character":62},"in_reply_to":"7a8ec9b2_788d457b","updated":"2016-09-22 01:02:49.000000000","message":"In passing I noticed this was brought up in the related glance change and they wanted kwargs used in case the library API changes the method signature, which would be a breaking API change, but it could happen so this is defensive, and I don\u0027t really have a problem with it.","commit_id":"5179ddd158da678111d895348be8659d6ac14797"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"f85f8e43682ba1e5293144ad41a81a5e9e5cc612","unresolved":false,"context_lines":[{"line_number":559,"context_line":"            )"},{"line_number":560,"context_line":"            try:"},{"line_number":561,"context_line":"                verifier \u003d signature_utils.get_verifier("},{"line_number":562,"context_line":"                    context\u003dcontext,"},{"line_number":563,"context_line":"                    image_signature_certificate_uuid\u003dimg_sig_cert_uuid,"},{"line_number":564,"context_line":"                    image_signature_hash_method\u003dimg_sig_hash_method,"},{"line_number":565,"context_line":"                    image_signature\u003dimg_signature,"},{"line_number":566,"context_line":"                    image_signature_key_type\u003dimg_sig_key_type,"},{"line_number":567,"context_line":"                )"},{"line_number":568,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":569,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_788d457b","line":566,"range":{"start_line":562,"start_character":16,"end_line":566,"end_character":62},"in_reply_to":"7a8ec9b2_d27e38e3","updated":"2016-09-21 17:22:11.000000000","message":"While I understand why using kwargs is beneficial in certain cases, I still think this is much harder to read than it was before (actual downside now vs theoretical downside in the future). Unnecessary change/churn also tends to decrease your chances of getting things merged ;)","commit_id":"5179ddd158da678111d895348be8659d6ac14797"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"a95d052f2254401c4637a599e783784e9e93fa30","unresolved":false,"context_lines":[{"line_number":559,"context_line":"            )"},{"line_number":560,"context_line":"            try:"},{"line_number":561,"context_line":"                verifier \u003d signature_utils.get_verifier("},{"line_number":562,"context_line":"                    context\u003dcontext,"},{"line_number":563,"context_line":"                    image_signature_certificate_uuid\u003dimg_sig_cert_uuid,"},{"line_number":564,"context_line":"                    image_signature_hash_method\u003dimg_sig_hash_method,"},{"line_number":565,"context_line":"                    image_signature\u003dimg_signature,"},{"line_number":566,"context_line":"                    image_signature_key_type\u003dimg_sig_key_type,"},{"line_number":567,"context_line":"                )"},{"line_number":568,"context_line":"            except cursive_exception.SignatureVerificationError:"},{"line_number":569,"context_line":"                with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a8ec9b2_d27e38e3","line":566,"range":{"start_line":562,"start_character":16,"end_line":566,"end_character":62},"in_reply_to":"7a8ec9b2_ed97d88d","updated":"2016-09-21 17:00:01.000000000","message":"Since this change switches out existing functionality in Nova for a new library, we want to ensure that the client library is being called correctly. This is why we switched to keyword args.","commit_id":"5179ddd158da678111d895348be8659d6ac14797"}],"nova/objects/fields.py":[{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"9d39b82ab77b5ec5bfb1bc1fa16fe8a0f32c74f6","unresolved":false,"context_lines":[{"line_number":426,"context_line":""},{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple(signature_utils.REGISTERED_TYPES.keys())"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"class OSType(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ffe62b97_1c056314","line":429,"range":{"start_line":429,"start_character":16,"end_line":429,"end_character":32},"updated":"2017-03-28 17:16:41.000000000","message":"This should be \"signature_utils.SignatureKeyType.REGISTERED_TYPES.keys()\"\n\nSee https://github.com/openstack/cursive/blob/master/cursive/signature_utils.py#L84","commit_id":"4b89c02e28701645e719210623a8e3ac6d316662"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"c2cf425fda83dd260a09a415df7ee0b8c35bcd8c","unresolved":false,"context_lines":[{"line_number":426,"context_line":""},{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple(signature_utils.REGISTERED_TYPES.keys())"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"class OSType(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ffe62b97_3fca594d","line":429,"range":{"start_line":429,"start_character":16,"end_line":429,"end_character":32},"in_reply_to":"ffe62b97_1c056314","updated":"2017-03-28 17:24:21.000000000","message":"Done","commit_id":"4b89c02e28701645e719210623a8e3ac6d316662"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c091a72d0976c9ef76c49793525a7bdffa665b63","unresolved":false,"context_lines":[{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple("},{"line_number":430,"context_line":"        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())"},{"line_number":431,"context_line":"    )"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_5d594cfc","line":430,"range":{"start_line":430,"start_character":48,"end_line":430,"end_character":69},"updated":"2017-04-05 16:21:20.000000000","message":"Isn\u0027t this just empty to start?\n\nhttps://github.com/openstack/cursive/blob/0.1.2/cursive/signature_utils.py#L84","commit_id":"d17e701ddbbb6ebcc2a27c4d27053d6e1f87989d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"868246e4fa3d52b13cf770a0683d3b069db2ac32","unresolved":false,"context_lines":[{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple("},{"line_number":430,"context_line":"        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())"},{"line_number":431,"context_line":"    )"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_a0138fb8","line":430,"range":{"start_line":430,"start_character":48,"end_line":430,"end_character":69},"in_reply_to":"bff0334d_5d594cfc","updated":"2017-04-05 16:36:30.000000000","message":"Oh I see how it\u0027s registered on import here:\n\nhttps://github.com/openstack/cursive/blob/0.1.2/cursive/signature_utils.py#L172-L180","commit_id":"d17e701ddbbb6ebcc2a27c4d27053d6e1f87989d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"552cd8f20f419a67fd65f9e6369c00d408abf767","unresolved":false,"context_lines":[{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple("},{"line_number":430,"context_line":"        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())"},{"line_number":431,"context_line":"    )"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_c0b45338","line":430,"range":{"start_line":430,"start_character":48,"end_line":430,"end_character":69},"in_reply_to":"bff0334d_5d594cfc","updated":"2017-04-05 16:28:31.000000000","message":"SignatureKeyType.register is a @classmethod that can populate the class member REGISTERED_TYPES.","commit_id":"d17e701ddbbb6ebcc2a27c4d27053d6e1f87989d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cf1428e1a248f2fee0c87526501abc136b7115f1","unresolved":false,"context_lines":[{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple("},{"line_number":430,"context_line":"        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())"},{"line_number":431,"context_line":"    )"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_c9cf5454","line":430,"range":{"start_line":430,"start_character":48,"end_line":430,"end_character":69},"in_reply_to":"bff0334d_a0138fb8","updated":"2017-04-10 13:20:12.000000000","message":"I was worried about this changing without us knowing about it, but the unit test will catch when that happens, so thats all good I think.","commit_id":"d17e701ddbbb6ebcc2a27c4d27053d6e1f87989d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44ce0c61a7fbb3f467826dbcad2a93d4c054d3f1","unresolved":false,"context_lines":[{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple("},{"line_number":430,"context_line":"        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())"},{"line_number":431,"context_line":"    )"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_fd2a997c","line":430,"range":{"start_line":430,"start_character":48,"end_line":430,"end_character":69},"in_reply_to":"bff0334d_c9cf5454","updated":"2017-04-11 20:57:36.000000000","message":"Apparently this is dependent on backend, someone reported this in the nova channel today:\n\n(3:55:32 PM) swebster: mriedem: Very right.  Centos: [\u0027RSA-PSS\u0027, \u0027ECC_SECP521R1\u0027, \u0027ECC_SECP384R1\u0027, \u0027DSA\u0027]. Ubuntu: [\u0027RSA-PSS\u0027, \u0027ECC_SECP521R1\u0027, \u0027ECC_SECT409R1\u0027, \u0027ECC_SECT409K1\u0027, \u0027ECC_SECT571R1\u0027, \u0027ECC_SECP384R1\u0027, \u0027ECC_SECT571K1\u0027, \u0027DSA\u0027]\n\nProbably due to the conditional here:\n\nhttps://github.com/openstack/cursive/blob/master/cursive/signature_utils.py#L177","commit_id":"d17e701ddbbb6ebcc2a27c4d27053d6e1f87989d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9c7fbee69619ef2f1127d2dd95b66723ec2c7eee","unresolved":false,"context_lines":[{"line_number":427,"context_line":"class ImageSignatureKeyType(BaseNovaEnum):"},{"line_number":428,"context_line":"    # Represents the possible keypair types used for image signing"},{"line_number":429,"context_line":"    ALL \u003d tuple("},{"line_number":430,"context_line":"        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())"},{"line_number":431,"context_line":"    )"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_54f6fad8","line":430,"range":{"start_line":430,"start_character":48,"end_line":430,"end_character":69},"in_reply_to":"bff0334d_fd2a997c","updated":"2017-04-12 01:26:30.000000000","message":"https://bugs.launchpad.net/nova/+bug/1681946","commit_id":"d17e701ddbbb6ebcc2a27c4d27053d6e1f87989d"}],"nova/tests/unit/image/test_glance.py":[{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"3e61ec9dd6458fbf8ec53e11c7a40e51e234cf40","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"                                                   mock_log):"},{"line_number":1132,"context_line":"        self.flags(use_glance_v1\u003dTrue, group\u003d\u0027glance\u0027)"},{"line_number":1133,"context_line":"        service \u003d glance.GlanceImageService(self.client)"},{"line_number":1134,"context_line":"        mock_get_verifier.side_effect \u003d \\"},{"line_number":1135,"context_line":"            cursive.exception.SignatureVerificationError("},{"line_number":1136,"context_line":"                reason\u003d\u0027Signature verification failed.\u0027"},{"line_number":1137,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_e95fea3e","line":1134,"updated":"2016-08-04 16:41:40.000000000","message":"A \\ shouldn\u0027t be used","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"8366b3d26ac622e91203da885f098c6d5d4c29c6","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"                                                   mock_log):"},{"line_number":1132,"context_line":"        self.flags(use_glance_v1\u003dTrue, group\u003d\u0027glance\u0027)"},{"line_number":1133,"context_line":"        service \u003d glance.GlanceImageService(self.client)"},{"line_number":1134,"context_line":"        mock_get_verifier.side_effect \u003d \\"},{"line_number":1135,"context_line":"            cursive.exception.SignatureVerificationError("},{"line_number":1136,"context_line":"                reason\u003d\u0027Signature verification failed.\u0027"},{"line_number":1137,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_c4248b0e","line":1134,"in_reply_to":"bacf61ea_e95fea3e","updated":"2016-08-04 17:03:30.000000000","message":"Done","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2782ec7ed79c5fdc418867a1ae9f117afd73ac81","unresolved":false,"context_lines":[{"line_number":1253,"context_line":"                                                   mock_log):"},{"line_number":1254,"context_line":"        self.flags(use_glance_v1\u003dFalse, group\u003d\u0027glance\u0027)"},{"line_number":1255,"context_line":"        service \u003d glance.GlanceImageServiceV2(self.client)"},{"line_number":1256,"context_line":"        mock_get_verifier.side_effect \u003d \\"},{"line_number":1257,"context_line":"            cursive.exception.SignatureVerificationError("},{"line_number":1258,"context_line":"                reason\u003d\u0027Signature verification failed.\u0027"},{"line_number":1259,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_89f58eee","line":1256,"range":{"start_line":1256,"start_character":40,"end_line":1256,"end_character":41},"updated":"2016-08-04 16:27:48.000000000","message":"Would like to see the backslash eliminated…","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"8366b3d26ac622e91203da885f098c6d5d4c29c6","unresolved":false,"context_lines":[{"line_number":1253,"context_line":"                                                   mock_log):"},{"line_number":1254,"context_line":"        self.flags(use_glance_v1\u003dFalse, group\u003d\u0027glance\u0027)"},{"line_number":1255,"context_line":"        service \u003d glance.GlanceImageServiceV2(self.client)"},{"line_number":1256,"context_line":"        mock_get_verifier.side_effect \u003d \\"},{"line_number":1257,"context_line":"            cursive.exception.SignatureVerificationError("},{"line_number":1258,"context_line":"                reason\u003d\u0027Signature verification failed.\u0027"},{"line_number":1259,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_041b43cb","line":1256,"range":{"start_line":1256,"start_character":40,"end_line":1256,"end_character":41},"in_reply_to":"bacf61ea_89f58eee","updated":"2016-08-04 17:03:30.000000000","message":"Done","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"}],"nova/tests/unit/objects/test_fields.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9be7f7b574f4f312de61ebef7b0ca01bdefcfa42","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.key_type_field \u003d fields.ImageSignatureKeyType()"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def test_hashes(self):"},{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_84bbedc3","line":344,"range":{"start_line":344,"start_character":46,"end_line":344,"end_character":58},"updated":"2017-03-15 15:57:41.000000000","message":"This kind of sucks, this means anytime cursive registers a new hash method and does a release, nova will be broken.\n\nWe use upper-constraints to avoid that, but it means you won\u0027t be able to bump upper-constraints to pull in new cursive if it has a new hash method, and to get around that you\u0027d have to first fix the tests in nova, but it\u0027s kind of a chicken and egg issue and you might have to straddle the release and upper-constraint change.\n\nMaybe we need to decouple https://github.com/openstack/nova/blob/edf51119fa59ff8a3337abb9107a06fa33d3c68f/nova/objects/fields.py#L420-L429 at least from this test?\n\nI\u0027m not entirely sure what to do here, the logic is hurting my brain.","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"f707bb326606e9c3afd4600aa146cfb8417aea3d","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.key_type_field \u003d fields.ImageSignatureKeyType()"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def test_hashes(self):"},{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_2b5b7df7","line":344,"range":{"start_line":344,"start_character":46,"end_line":344,"end_character":58},"in_reply_to":"1a1ced50_0097803a","updated":"2017-03-21 19:49:31.000000000","message":"@Matt Riedemann: Cursive does have constants. We don\u0027t pull directly from cryptography since cryptography supports many hash algorithms which aren\u0027t ideal for digital signatures (e.g. MD5).\n\nSee: https://github.com/openstack/cursive/blob/master/cursive/signature_utils.py#L37","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"a34cd8d1a35547c42ea3eeee61f424b1db3b4617","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.key_type_field \u003d fields.ImageSignatureKeyType()"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def test_hashes(self):"},{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_7d1e1bbc","line":344,"range":{"start_line":344,"start_character":46,"end_line":344,"end_character":58},"in_reply_to":"1a1ced50_3a4109aa","updated":"2017-03-21 19:02:43.000000000","message":"That\u0027s pretty bad imo. I\u0027d much prefer to remove the tests and use constants from cursive for the enums.","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cebd5bf21dc3c97ca756bd0e16c0e9390af0e307","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.key_type_field \u003d fields.ImageSignatureKeyType()"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def test_hashes(self):"},{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_3a4109aa","line":344,"range":{"start_line":344,"start_character":46,"end_line":344,"end_character":58},"in_reply_to":"1a1ced50_3a974949","updated":"2017-03-21 18:44:31.000000000","message":"I don\u0027t think we can remove the enums from the ImageSignatureHashType and ImageSignatureKeyType field types. We should probably change those to use constants from the cursive library though.\n\nThinking ahead on what it would look like if we didn\u0027t remove these tests:\n\n1. A new hash method or key type is added to cursive and released.\n2. The requirements repo change to bump the version of cursive in upper-constraints will fail because it runs the nova unit tests and these tests will fail.\n3. To fix that and unblock the u-c change, we\u0027d need to add the new enums to the nova fields, which would change the versions on any objects using those fields (just ImageMetaProps right now).\n4. Then make the u-c change depend on that nova fix and also bump the minimum required version of cursive in global-requirements (since we\u0027d be declaring support for that hash method or key type in ImageMetaProps).\n\nIf we can agree that ^ is not the worst thing in the world, or these values don\u0027t change often in cursive, then we might be able to live with it.","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a308cfee36977674e332d0e5db9cd04a85e8619a","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.key_type_field \u003d fields.ImageSignatureKeyType()"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def test_hashes(self):"},{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_0097803a","line":344,"range":{"start_line":344,"start_character":46,"end_line":344,"end_character":58},"in_reply_to":"1a1ced50_7d1e1bbc","updated":"2017-03-21 19:22:31.000000000","message":"I talked with sdague about this in IRC and I\u0027m good with dropping the unit tests from Nova. I don\u0027t know we even want to use constants from cursive in the fields, I don\u0027t think cursive even has constants defined, it just has them in the dict/list forms and pulls the keys from cryptography.\n\nSo if new constants are added, then they first go into the library, get released, we bump minimum required version in g-r, and then update our enums within Nova to support using them. That seems fine.\n\nLet\u0027s leave a comment in the field enum definitions that the values are reflected from cursive in case people wonder later.","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"2aabd6f078d66a67fffd32accb87682431e68fe2","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.key_type_field \u003d fields.ImageSignatureKeyType()"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def test_hashes(self):"},{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_3a974949","line":344,"range":{"start_line":344,"start_character":46,"end_line":344,"end_character":58},"in_reply_to":"3a1ff146_84bbedc3","updated":"2017-03-21 18:29:45.000000000","message":"Could we just remove these test_fields tests and remove the enums from fields.py? Are they necessary anymore if cursive is its own library?","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9be7f7b574f4f312de61ebef7b0ca01bdefcfa42","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"},{"line_number":348,"context_line":"        key_type_dict \u003d signature_utils.SignatureKeyType._REGISTERED_TYPES"},{"line_number":349,"context_line":"        key_types \u003d list(key_type_dict.keys())"},{"line_number":350,"context_line":"        for key_type in key_types:"},{"line_number":351,"context_line":"            self.assertIn(key_type, self.key_type_field.ALL)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_84176da2","line":348,"range":{"start_line":348,"start_character":57,"end_line":348,"end_character":74},"updated":"2017-03-15 15:57:41.000000000","message":"I for sure don\u0027t like accessing a private variable from a library in a nova unit test.","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"d9ec99711742eb4549ac4fffca3ef07cbc8dbdc2","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"},{"line_number":348,"context_line":"        key_type_dict \u003d signature_utils.SignatureKeyType._REGISTERED_TYPES"},{"line_number":349,"context_line":"        key_types \u003d list(key_type_dict.keys())"},{"line_number":350,"context_line":"        for key_type in key_types:"},{"line_number":351,"context_line":"            self.assertIn(key_type, self.key_type_field.ALL)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bff0334d_a63172ef","line":348,"range":{"start_line":348,"start_character":57,"end_line":348,"end_character":74},"in_reply_to":"1a1ced50_3d7903c9","updated":"2017-04-05 13:37:40.000000000","message":"Done","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"f38f76215eef5e77e84ebb7f60bdc79eaf5e7fb4","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"},{"line_number":348,"context_line":"        key_type_dict \u003d signature_utils.SignatureKeyType._REGISTERED_TYPES"},{"line_number":349,"context_line":"        key_types \u003d list(key_type_dict.keys())"},{"line_number":350,"context_line":"        for key_type in key_types:"},{"line_number":351,"context_line":"            self.assertIn(key_type, self.key_type_field.ALL)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_3d7903c9","line":348,"range":{"start_line":348,"start_character":57,"end_line":348,"end_character":74},"in_reply_to":"3a1ff146_84176da2","updated":"2017-03-21 19:15:28.000000000","message":"agreed","commit_id":"5461b4a598bbc701313235d5a9e9728c86b80853"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"8eb223d25204242f42c43ef6d0e19df1015a0027","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import datetime"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cursive import signature_utils"},{"line_number":19,"context_line":"import iso8601"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"from oslo_versionedobjects import exception as ovo_exc"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_6ce60a46","line":18,"updated":"2017-03-23 17:49:41.000000000","message":"Is this line still needed?","commit_id":"4b77aabe08e9890c0c63e92fe77ff38f63c24fc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c091a72d0976c9ef76c49793525a7bdffa665b63","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"},{"line_number":348,"context_line":"        key_type_dict \u003d signature_utils.SignatureKeyType._REGISTERED_TYPES"},{"line_number":349,"context_line":"        key_types \u003d list(key_type_dict.keys())"},{"line_number":350,"context_line":"        for key_type in key_types:"},{"line_number":351,"context_line":"            self.assertIn(key_type, self.key_type_field.ALL)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"class TestResourceClass(TestString):"}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_5db5cced","side":"PARENT","line":351,"range":{"start_line":347,"start_character":4,"end_line":351,"end_character":60},"updated":"2017-04-05 16:21:20.000000000","message":"I\u0027m thinking this would fail since we don\u0027t have the types registered when we load it up?","commit_id":"c844482a098af9ae8f1e4df41b9a4439047ef59d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"868246e4fa3d52b13cf770a0683d3b069db2ac32","unresolved":false,"context_lines":[{"line_number":344,"context_line":"        for hash_name in list(signature_utils.HASH_METHODS.keys()):"},{"line_number":345,"context_line":"            self.assertIn(hash_name, self.hash_field.ALL)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_key_types(self):"},{"line_number":348,"context_line":"        key_type_dict \u003d signature_utils.SignatureKeyType._REGISTERED_TYPES"},{"line_number":349,"context_line":"        key_types \u003d list(key_type_dict.keys())"},{"line_number":350,"context_line":"        for key_type in key_types:"},{"line_number":351,"context_line":"            self.assertIn(key_type, self.key_type_field.ALL)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"class TestResourceClass(TestString):"}],"source_content_type":"text/x-python","patch_set":16,"id":"bff0334d_206c1f35","side":"PARENT","line":351,"range":{"start_line":347,"start_character":4,"end_line":351,"end_character":60},"in_reply_to":"bff0334d_5db5cced","updated":"2017-04-05 16:36:30.000000000","message":"Nevermind I figured it out. I also pulled this change down and modified it to run this test and make sure:\n\ndiff --git a/nova/objects/fields.py b/nova/objects/fields.py\nindex 8d2b57a..af0c45f 100644\n--- a/nova/objects/fields.py\n+++ b/nova/objects/fields.py\n@@ -426,9 +426,9 @@ class ImageSignatureHashType(BaseNovaEnum):\n \n class ImageSignatureKeyType(BaseNovaEnum):\n     # Represents the possible keypair types used for image signing\n-    ALL \u003d tuple(\n-        sorted(signature_utils.SignatureKeyType.REGISTERED_TYPES.keys())\n-    )\n+    ALL \u003d (\u0027DSA\u0027, \u0027ECC_SECT571K1\u0027, \u0027ECC_SECT409K1\u0027, \u0027ECC_SECT571R1\u0027,\n+           \u0027ECC_SECT409R1\u0027, \u0027ECC_SECP521R1\u0027, \u0027ECC_SECP384R1\u0027, \u0027RSA-PSS\u0027\n+           )\n \n \n class OSType(BaseNovaEnum):\ndiff --git a/nova/tests/unit/objects/test_fields.py b/nova/tests/unit/objects/test_fields.py\nindex 9c86c8b..6e00ced 100644\n--- a/nova/tests/unit/objects/test_fields.py\n+++ b/nova/tests/unit/objects/test_fields.py\n@@ -15,6 +15,7 @@\n import datetime\n import os\n \n+from cursive import signature_utils\n import iso8601\n import mock\n from oslo_versionedobjects import exception as ovo_exc\n@@ -331,6 +332,21 @@ class TestVMMode(TestField):\n                           \u0027invalid\u0027)\n \n \n+class TestImageSignatureTypes(TestField):\n+    # Ensure that the object definition is updated\n+    # in step with the signature_utils module\n+    def setUp(self):\n+        super(TestImageSignatureTypes, self).setUp()\n+        self.key_type_field \u003d fields.ImageSignatureKeyType()\n+\n+    def test_key_types(self):\n+        key_type_dict \u003d signature_utils.SignatureKeyType.REGISTERED_TYPES\n+        self.assertNotEqual(0, len(key_type_dict))\n+        key_types \u003d list(key_type_dict.keys())\n+        for key_type in key_types:\n+            self.assertIn(key_type, self.key_type_field.ALL)\n+\n+\n class TestResourceClass(TestString):\n     def setUp(self):\n         super(TestResourceClass, self).setUp()","commit_id":"c844482a098af9ae8f1e4df41b9a4439047ef59d"}],"requirements.txt":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"2782ec7ed79c5fdc418867a1ae9f117afd73ac81","unresolved":false,"context_lines":[{"line_number":57,"context_line":"os-win\u003e\u003d0.2.3 # Apache-2.0"},{"line_number":58,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":59,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":60,"context_line":"cursive\u003e\u003d0.1.0 # Apache-2.0 "}],"source_content_type":"text/plain","patch_set":1,"id":"bacf61ea_29bc6205","line":60,"range":{"start_line":60,"start_character":27,"end_line":60,"end_character":28},"updated":"2016-08-04 16:27:48.000000000","message":"Trailing whitespace…","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"8366b3d26ac622e91203da885f098c6d5d4c29c6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"os-win\u003e\u003d0.2.3 # Apache-2.0"},{"line_number":58,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":59,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":60,"context_line":"cursive\u003e\u003d0.1.0 # Apache-2.0 "}],"source_content_type":"text/plain","patch_set":1,"id":"bacf61ea_84df3339","line":60,"range":{"start_line":60,"start_character":27,"end_line":60,"end_character":28},"in_reply_to":"bacf61ea_29bc6205","updated":"2016-08-04 17:03:30.000000000","message":"Done","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"3e61ec9dd6458fbf8ec53e11c7a40e51e234cf40","unresolved":false,"context_lines":[{"line_number":57,"context_line":"os-win\u003e\u003d0.2.3 # Apache-2.0"},{"line_number":58,"context_line":"castellan\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":59,"context_line":"microversion-parse\u003e\u003d0.1.2 # Apache-2.0"},{"line_number":60,"context_line":"cursive\u003e\u003d0.1.0 # Apache-2.0 "}],"source_content_type":"text/plain","patch_set":1,"id":"bacf61ea_4969d6f8","line":60,"range":{"start_line":60,"start_character":27,"end_line":60,"end_character":28},"in_reply_to":"bacf61ea_29bc6205","updated":"2016-08-04 16:41:40.000000000","message":"You\u0027ll need to submit a patch to openstack/requirements to include cursive in global-requirements, and make this patch dependent on that one.","commit_id":"65d443e4801edd9b730963315ec9bccf384cd5bd"}]}
