)]}'
{"pegleg/engine/catalogs/passphrase_catalog.py":[{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"294050606f7b54da28b9b3da4cb1bca0c63225d1","unresolved":false,"context_lines":[{"line_number":30,"context_line":"P_DEFAULT_LENGTH \u003d 24"},{"line_number":31,"context_line":"P_DEFAULT_STORAGE_POLICY \u003d \u0027encrypted\u0027"},{"line_number":32,"context_line":"P_DEFAULT_TYPE \u003d \u0027passphrase\u0027"},{"line_number":33,"context_line":"VALID_PASSPHRASE_TYPES \u003d [\"passphrase\", \"base64\", \"uuid\"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"__all__ \u003d [\u0027PassphraseCatalog\u0027]"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_509b16c8","line":33,"updated":"2019-07-09 20:36:45.000000000","message":"nit: single quotes","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"62aa30bee39f298a3ae788ed5ab032a1eae50eae","unresolved":false,"context_lines":[{"line_number":30,"context_line":"P_DEFAULT_LENGTH \u003d 24"},{"line_number":31,"context_line":"P_DEFAULT_STORAGE_POLICY \u003d \u0027encrypted\u0027"},{"line_number":32,"context_line":"P_DEFAULT_TYPE \u003d \u0027passphrase\u0027"},{"line_number":33,"context_line":"VALID_PASSPHRASE_TYPES \u003d [\"passphrase\", \"base64\", \"uuid\"]"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"__all__ \u003d [\u0027PassphraseCatalog\u0027]"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_c713b85b","line":33,"in_reply_to":"7faddb67_509b16c8","updated":"2019-07-10 17:18:40.000000000","message":"Done","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c221c1e0893c950f0adc067c2a8494a51abecfdd","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":111,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":112,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":113,"context_line":"                    passphrase_type \u003d passphrase.get(P_TYPE, P_DEFAULT_TYPE)"},{"line_number":114,"context_line":"                    if passphrase_type not in VALID_PASSPHRASE_TYPES:"},{"line_number":115,"context_line":"                        raise exceptions.InvalidPassphraseType("},{"line_number":116,"context_line":"                            ptype\u003dpassphrase_type,"},{"line_number":117,"context_line":"                            pname\u003dpassphrase_name,"},{"line_number":118,"context_line":"                            validvalues\u003dVALID_PASSPHRASE_TYPES)"},{"line_number":119,"context_line":"                    else:"},{"line_number":120,"context_line":"                        return passphrase_type"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_a36546e3","line":118,"range":{"start_line":113,"start_character":20,"end_line":118,"end_character":63},"updated":"2019-07-11 04:39:45.000000000","message":"This kind of validation can more easily be achieved using schema validation of the entire passphrase catalog file, along with all other Pegleg-namespaced documents. https://review.opendev.org/#/c/608159/","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"56636a419fca315e742eba615fa0c391e5e240db","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":111,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":112,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":113,"context_line":"                    passphrase_type \u003d passphrase.get(P_TYPE, P_DEFAULT_TYPE)"},{"line_number":114,"context_line":"                    if passphrase_type not in VALID_PASSPHRASE_TYPES:"},{"line_number":115,"context_line":"                        raise exceptions.InvalidPassphraseType("},{"line_number":116,"context_line":"                            ptype\u003dpassphrase_type,"},{"line_number":117,"context_line":"                            pname\u003dpassphrase_name,"},{"line_number":118,"context_line":"                            validvalues\u003dVALID_PASSPHRASE_TYPES)"},{"line_number":119,"context_line":"                    else:"},{"line_number":120,"context_line":"                        return passphrase_type"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_007a0587","line":118,"range":{"start_line":113,"start_character":20,"end_line":118,"end_character":63},"in_reply_to":"7faddb67_a36546e3","updated":"2019-07-11 15:53:59.000000000","message":"True, I\u0027d like to work towards that in a separate effort to clean up the code as it applies to several areas of Pegleg not just the new items added in this patchset.","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c221c1e0893c950f0adc067c2a8494a51abecfdd","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        \"\"\"Return the regenerable field of the ``passphrase_name``."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        Determines if this passphrase name is regenerable."},{"line_number":126,"context_line":"        Valid options: \u0027true\u0027, \u0027false\u0027."},{"line_number":127,"context_line":"        If no option is specified, default to \u0027true\u0027. If an invalid option is"},{"line_number":128,"context_line":"        specified, raise an exception"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_c37082a8","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":39},"updated":"2019-07-11 04:39:45.000000000","message":"This doesn’t appear to be the case. These are strings, not Boolean values.","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"56636a419fca315e742eba615fa0c391e5e240db","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        \"\"\"Return the regenerable field of the ``passphrase_name``."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        Determines if this passphrase name is regenerable."},{"line_number":126,"context_line":"        Valid options: \u0027true\u0027, \u0027false\u0027."},{"line_number":127,"context_line":"        If no option is specified, default to \u0027true\u0027. If an invalid option is"},{"line_number":128,"context_line":"        specified, raise an exception"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_4046bd51","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":39},"in_reply_to":"7faddb67_c37082a8","updated":"2019-07-11 15:53:59.000000000","message":"Done","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c221c1e0893c950f0adc067c2a8494a51abecfdd","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":137,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":138,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":139,"context_line":"                    passphrase_regenerable \u003d passphrase.get("},{"line_number":140,"context_line":"                        P_REGENERABLE, P_DEFAULT_REGENERABLE)"},{"line_number":141,"context_line":"                    if passphrase_regenerable not in VALID_BOOLEAN_FIELDS:"},{"line_number":142,"context_line":"                        raise exceptions.InvalidPassphraseRegeneration("},{"line_number":143,"context_line":"                            pregen\u003dpassphrase_regenerable,"},{"line_number":144,"context_line":"                            pname\u003dpassphrase_name,"},{"line_number":145,"context_line":"                            validvalues\u003dVALID_BOOLEAN_FIELDS)"},{"line_number":146,"context_line":"                    else:"},{"line_number":147,"context_line":"                        return passphrase_regenerable"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_e3733eb0","line":145,"range":{"start_line":139,"start_character":20,"end_line":145,"end_character":61},"updated":"2019-07-11 04:39:45.000000000","message":"Ditto.","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"56636a419fca315e742eba615fa0c391e5e240db","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":137,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":138,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":139,"context_line":"                    passphrase_regenerable \u003d passphrase.get("},{"line_number":140,"context_line":"                        P_REGENERABLE, P_DEFAULT_REGENERABLE)"},{"line_number":141,"context_line":"                    if passphrase_regenerable not in VALID_BOOLEAN_FIELDS:"},{"line_number":142,"context_line":"                        raise exceptions.InvalidPassphraseRegeneration("},{"line_number":143,"context_line":"                            pregen\u003dpassphrase_regenerable,"},{"line_number":144,"context_line":"                            pname\u003dpassphrase_name,"},{"line_number":145,"context_line":"                            validvalues\u003dVALID_BOOLEAN_FIELDS)"},{"line_number":146,"context_line":"                    else:"},{"line_number":147,"context_line":"                        return passphrase_regenerable"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_a070d1a6","line":145,"range":{"start_line":139,"start_character":20,"end_line":145,"end_character":61},"in_reply_to":"7faddb67_e3733eb0","updated":"2019-07-11 15:53:59.000000000","message":"ditto","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c221c1e0893c950f0adc067c2a8494a51abecfdd","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":160,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":161,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":162,"context_line":"                    passphrase_prompt \u003d passphrase.get(P_PROMPT,"},{"line_number":163,"context_line":"                                                       P_DEFAULT_PROMPT)"},{"line_number":164,"context_line":"                    if passphrase_prompt not in VALID_BOOLEAN_FIELDS:"},{"line_number":165,"context_line":"                        raise exceptions.InvalidPassphrasePrompt("},{"line_number":166,"context_line":"                            pprompt\u003dpassphrase_prompt,"},{"line_number":167,"context_line":"                            pname\u003dpassphrase_name,"},{"line_number":168,"context_line":"                            validvalues\u003dVALID_BOOLEAN_FIELDS)"},{"line_number":169,"context_line":"                    else:"},{"line_number":170,"context_line":"                        return passphrase_prompt"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_436492e4","line":168,"range":{"start_line":162,"start_character":19,"end_line":168,"end_character":61},"updated":"2019-07-11 04:39:45.000000000","message":"Ditto.","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"56636a419fca315e742eba615fa0c391e5e240db","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":160,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":161,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":162,"context_line":"                    passphrase_prompt \u003d passphrase.get(P_PROMPT,"},{"line_number":163,"context_line":"                                                       P_DEFAULT_PROMPT)"},{"line_number":164,"context_line":"                    if passphrase_prompt not in VALID_BOOLEAN_FIELDS:"},{"line_number":165,"context_line":"                        raise exceptions.InvalidPassphrasePrompt("},{"line_number":166,"context_line":"                            pprompt\u003dpassphrase_prompt,"},{"line_number":167,"context_line":"                            pname\u003dpassphrase_name,"},{"line_number":168,"context_line":"                            validvalues\u003dVALID_BOOLEAN_FIELDS)"},{"line_number":169,"context_line":"                    else:"},{"line_number":170,"context_line":"                        return passphrase_prompt"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_c0738db0","line":168,"range":{"start_line":162,"start_character":19,"end_line":168,"end_character":61},"in_reply_to":"7faddb67_436492e4","updated":"2019-07-11 15:53:59.000000000","message":"ditto","commit_id":"9ffd716e1a72349ef6e33a66a9cb221a5e14e999"},{"author":{"_account_id":28235,"name":"Aaron Sheffield","email":"ajs@sheffieldfamily.net","username":"aaronsheffield"},"change_message_id":"dfa3a240cd837bc64649d7dad41e27b0e4473b5c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":111,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":112,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":113,"context_line":"                    passphrase_type \u003d passphrase.get(P_TYPE, P_DEFAULT_TYPE)"},{"line_number":114,"context_line":"                    if passphrase_type not in VALID_PASSPHRASE_TYPES:"},{"line_number":115,"context_line":"                        raise exceptions.InvalidPassphraseType("},{"line_number":116,"context_line":"                            ptype\u003dpassphrase_type,"}],"source_content_type":"text/x-python","patch_set":26,"id":"7faddb67_d441c1aa","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":76},"updated":"2019-07-17 15:46:05.000000000","message":"Maybe add a .lower()?  Seems reasonable to not fail because of casing.","commit_id":"7d476ec9ee5ec38adccc636ee4efa2b5f5c55262"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"9f26630e8e06c144f45a921dfd6f6b811cd70980","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":111,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":112,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":113,"context_line":"                    passphrase_type \u003d passphrase.get(P_TYPE, P_DEFAULT_TYPE)"},{"line_number":114,"context_line":"                    if passphrase_type not in VALID_PASSPHRASE_TYPES:"},{"line_number":115,"context_line":"                        raise exceptions.InvalidPassphraseType("},{"line_number":116,"context_line":"                            ptype\u003dpassphrase_type,"}],"source_content_type":"text/x-python","patch_set":26,"id":"7faddb67_4f50da0b","line":113,"range":{"start_line":113,"start_character":38,"end_line":113,"end_character":76},"in_reply_to":"7faddb67_d441c1aa","updated":"2019-07-17 15:59:09.000000000","message":"Done","commit_id":"7d476ec9ee5ec38adccc636ee4efa2b5f5c55262"}],"pegleg/engine/exceptions.py":[{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"294050606f7b54da28b9b3da4cb1bca0c63225d1","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    \"\"\"Invalid Passphrase type\"\"\""},{"line_number":93,"context_line":"    message \u003d ("},{"line_number":94,"context_line":"        \u0027Invalid Passphrase type %(ptype)s specified for %(pname)s. Valid \u0027"},{"line_number":95,"context_line":"        \u0027types are: \"passphrase\", \"base64\", \"uuid\".\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class GenesisBundleEncryptionException(PeglegBaseException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_6b02e30b","line":95,"range":{"start_line":95,"start_character":20,"end_line":95,"end_character":50},"updated":"2019-07-09 20:36:45.000000000","message":"I would suggest referencing the list of valid types that you defined in case it changes in the future","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"62aa30bee39f298a3ae788ed5ab032a1eae50eae","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    \"\"\"Invalid Passphrase type\"\"\""},{"line_number":93,"context_line":"    message \u003d ("},{"line_number":94,"context_line":"        \u0027Invalid Passphrase type %(ptype)s specified for %(pname)s. Valid \u0027"},{"line_number":95,"context_line":"        \u0027types are: \"passphrase\", \"base64\", \"uuid\".\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class GenesisBundleEncryptionException(PeglegBaseException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_270dec36","line":95,"range":{"start_line":95,"start_character":20,"end_line":95,"end_character":50},"in_reply_to":"7faddb67_6b02e30b","updated":"2019-07-10 17:18:40.000000000","message":"Done","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":28235,"name":"Aaron Sheffield","email":"ajs@sheffieldfamily.net","username":"aaronsheffield"},"change_message_id":"dfa3a240cd837bc64649d7dad41e27b0e4473b5c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"               \u0027the site Passphrases!\u0027)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class InvalidPassphraseType(PeglegBaseException):"},{"line_number":92,"context_line":"    \"\"\"Invalid Passphrase type\"\"\""},{"line_number":93,"context_line":"    message \u003d ("},{"line_number":94,"context_line":"        \u0027Invalid Passphrase type %(ptype)s specified for %(pname)s. Valid \u0027"},{"line_number":95,"context_line":"        \u0027values are: %(validvalues)s.\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class InvalidPassphrasePrompt(PeglegBaseException):"},{"line_number":99,"context_line":"    \"\"\"Invalid Passphrase prompt field\"\"\""},{"line_number":100,"context_line":"    message \u003d ("},{"line_number":101,"context_line":"        \u0027Invalid Passphrase prompt %(pprompt)s specified for %(pname)s. Valid \u0027"},{"line_number":102,"context_line":"        \u0027values are: %(validvalues)s.\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class InvalidPassphraseRegeneration(PeglegBaseException):"},{"line_number":106,"context_line":"    \"\"\"Invalid Regenerable value for entry in passphrase-catalog\"\"\""},{"line_number":107,"context_line":"    message \u003d ("},{"line_number":108,"context_line":"        \u0027Invalid Regenerable value %(pregen)s specified for %(pname)s. Valid \u0027"},{"line_number":109,"context_line":"        \u0027values are: %(validvalues)s.\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class GenesisBundleEncryptionException(PeglegBaseException):"}],"source_content_type":"text/x-python","patch_set":26,"id":"7faddb67_747faddf","line":109,"range":{"start_line":91,"start_character":0,"end_line":109,"end_character":39},"updated":"2019-07-17 15:46:05.000000000","message":"Does adding the s at the end of the variables look okay?  Might change to \u0027s or just drop the s to avoid confusion.","commit_id":"7d476ec9ee5ec38adccc636ee4efa2b5f5c55262"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"9f26630e8e06c144f45a921dfd6f6b811cd70980","unresolved":false,"context_lines":[{"line_number":88,"context_line":"               \u0027the site Passphrases!\u0027)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class InvalidPassphraseType(PeglegBaseException):"},{"line_number":92,"context_line":"    \"\"\"Invalid Passphrase type\"\"\""},{"line_number":93,"context_line":"    message \u003d ("},{"line_number":94,"context_line":"        \u0027Invalid Passphrase type %(ptype)s specified for %(pname)s. Valid \u0027"},{"line_number":95,"context_line":"        \u0027values are: %(validvalues)s.\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class InvalidPassphrasePrompt(PeglegBaseException):"},{"line_number":99,"context_line":"    \"\"\"Invalid Passphrase prompt field\"\"\""},{"line_number":100,"context_line":"    message \u003d ("},{"line_number":101,"context_line":"        \u0027Invalid Passphrase prompt %(pprompt)s specified for %(pname)s. Valid \u0027"},{"line_number":102,"context_line":"        \u0027values are: %(validvalues)s.\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class InvalidPassphraseRegeneration(PeglegBaseException):"},{"line_number":106,"context_line":"    \"\"\"Invalid Regenerable value for entry in passphrase-catalog\"\"\""},{"line_number":107,"context_line":"    message \u003d ("},{"line_number":108,"context_line":"        \u0027Invalid Regenerable value %(pregen)s specified for %(pname)s. Valid \u0027"},{"line_number":109,"context_line":"        \u0027values are: %(validvalues)s.\u0027)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"class GenesisBundleEncryptionException(PeglegBaseException):"}],"source_content_type":"text/x-python","patch_set":26,"id":"7faddb67_2f247eae","line":109,"range":{"start_line":91,"start_character":0,"end_line":109,"end_character":39},"in_reply_to":"7faddb67_747faddf","updated":"2019-07-17 15:59:09.000000000","message":"%s is used when we have a % arg\n\n%(variable)s is used when we\u0027re passing some arg into the string.  Using these variables helps readability when formatting the errors at the source.","commit_id":"7d476ec9ee5ec38adccc636ee4efa2b5f5c55262"}],"pegleg/engine/generators/passphrase_generator.py":[{"author":{"_account_id":25731,"name":"Stacey Fletcher","email":"staceylynnfletcher@gmail.com","username":"StaceyFletcher"},"change_message_id":"a3127d3e69860a396bb758d43b0a49462c715a53","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            if interactive:"},{"line_number":81,"context_line":"                passphrase \u003d getpass("},{"line_number":82,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":83,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":84,"context_line":"            if not passphrase:"},{"line_number":85,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_6b63c3b2","line":82,"updated":"2019-07-09 20:50:30.000000000","message":"This looks to me that if I send interactive of true to regenerate all of the passphrase catalog entries it is going to prompt me for all of them?  Would also like to question if  we can randomly generate the uuid\u0027s for the OpenStack components, can we verify this with OpenStack community?  Would it make sense to have a prompt: true in our catalog to determine if you should prompt instead of having to press enter/leave blank for passphrases we know will be auto generated?","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"62aa30bee39f298a3ae788ed5ab032a1eae50eae","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            if interactive:"},{"line_number":81,"context_line":"                passphrase \u003d getpass("},{"line_number":82,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":83,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":84,"context_line":"            if not passphrase:"},{"line_number":85,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_c10e483a","line":82,"in_reply_to":"7faddb67_6b63c3b2","updated":"2019-07-10 17:18:40.000000000","message":"Changing UUID to always be regenerable\u003dFalse.\n\nInteractive will prompt for every passphrase - adding a new entry to passphrase catalog \"prompt\": True|False, default\u003dFalse.\n\nWith this, existing manual interaction on every passphrase is possible, manual generation for specific passphrases defined in the catalog will also be possible.","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"294050606f7b54da28b9b3da4cb1bca0c63225d1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":83,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":84,"context_line":"            if not passphrase:"},{"line_number":85,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":86,"context_line":"                    passphrase \u003d str(uuid.uuid4())"},{"line_number":87,"context_line":"                else:"},{"line_number":88,"context_line":"                    passphrase \u003d self._pass_util.get_crypto_string("}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_2b5aab29","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":54},"updated":"2019-07-09 20:36:45.000000000","message":"lol what bandit rule does this trip? B105?","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"62aa30bee39f298a3ae788ed5ab032a1eae50eae","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":83,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":84,"context_line":"            if not passphrase:"},{"line_number":85,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":86,"context_line":"                    passphrase \u003d str(uuid.uuid4())"},{"line_number":87,"context_line":"                else:"},{"line_number":88,"context_line":"                    passphrase \u003d self._pass_util.get_crypto_string("}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_a1554c1f","line":85,"range":{"start_line":85,"start_character":47,"end_line":85,"end_character":54},"in_reply_to":"7faddb67_2b5aab29","updated":"2019-07-10 17:18:40.000000000","message":"Yes, B105.  Added into the commit message the nosec reasoning, and which code I needed to nosec.","commit_id":"8c3435f78370141122e0f1ffad0b08342471d5b6"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2352dfa43e318c3c447a597b08f2c0e458d8591a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d getpass("},{"line_number":83,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":84,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":85,"context_line":"            if not passphrase:"},{"line_number":86,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":87,"context_line":"                    passphrase \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_7c5e0145","line":84,"range":{"start_line":82,"start_character":16,"end_line":84,"end_character":54},"updated":"2019-07-12 00:03:49.000000000","message":"Is it a problem if the user inputs an invalid UUID password? Does that need to be validated?","commit_id":"18a67f5e37c1d8cbc60e3df92e91ee7bd5b9fcab"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"c5c1a6b798be43cac0e663285f8e142e96ffa22f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d getpass("},{"line_number":83,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":84,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":85,"context_line":"            if not passphrase:"},{"line_number":86,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":87,"context_line":"                    passphrase \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_447d5c7d","line":84,"range":{"start_line":82,"start_character":16,"end_line":84,"end_character":54},"in_reply_to":"7faddb67_7c5e0145","updated":"2019-07-12 16:48:29.000000000","message":"I think this is a difficult point to balance a user\u0027s desires against Pegleg\u0027s requirements. When we generate passphrases automatically we don\u0027t give the user a choice, it\u0027s Pegleg\u0027s minimum 24 character passphrase with upper lower number and symbols included.\n\nIf there\u0027s a case where someone doesn\u0027t want that for any reason, this is the place to override it. We can\u0027t anticipate every use they would have and the restrictions on length or complexity of the service consuming the passphrase and so I don\u0027t think we can do validation here without making someone upset.\n\nI\u0027ve added a check to verify if a secret is a uuid that a manually entered uuid is valid.","commit_id":"18a67f5e37c1d8cbc60e3df92e91ee7bd5b9fcab"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"8da3cb78deda5d24258a9bcb209bcee50a2dac4a","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d getpass("},{"line_number":83,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":84,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":85,"context_line":"            if not passphrase:"},{"line_number":86,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":87,"context_line":"                    passphrase \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_f31bf77d","line":84,"range":{"start_line":82,"start_character":16,"end_line":84,"end_character":54},"in_reply_to":"7faddb67_7c5e0145","updated":"2019-07-12 12:48:55.000000000","message":"Validation seems like a good idea. Alex, did we decide to enforce minimum standards for passphrases?","commit_id":"18a67f5e37c1d8cbc60e3df92e91ee7bd5b9fcab"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"c5c1a6b798be43cac0e663285f8e142e96ffa22f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d getpass("},{"line_number":83,"context_line":"                    prompt\u003d\"Input passphrase/UUID for {}. Leave blank to \""},{"line_number":84,"context_line":"                    \"auto-generate:\\n\".format(p_name))"},{"line_number":85,"context_line":"            if not passphrase:"},{"line_number":86,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":87,"context_line":"                    passphrase \u003d str(uuid.uuid4())"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_646178d3","line":84,"range":{"start_line":82,"start_character":16,"end_line":84,"end_character":54},"in_reply_to":"7faddb67_f31bf77d","updated":"2019-07-12 16:48:29.000000000","message":"I\u0027m hesitant to add validation on normal passphrases/base64 strings for the reasons above. Anything we ask Pegleg to generate directly without human intervention however is being validated.","commit_id":"18a67f5e37c1d8cbc60e3df92e91ee7bd5b9fcab"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f17bc16796ecd550f68e3171115ce50743c28a9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":83,"context_line":"                if passphrase and passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":84,"context_line":"                    validated \u003d False"},{"line_number":85,"context_line":"                    while not validated:"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_8437bbff","line":82,"updated":"2019-07-15 17:48:04.000000000","message":"The last thing that occurs to me here is: Can the user also provide their own base64-encoded passphrase? Does that in turn require validation?","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"5bacef974ba950b67820cba900c100704a8de3ab","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":83,"context_line":"                if passphrase and passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":84,"context_line":"                    validated \u003d False"},{"line_number":85,"context_line":"                    while not validated:"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_945349e2","line":82,"in_reply_to":"7faddb67_28780ac2","updated":"2019-07-17 15:18:04.000000000","message":"Done","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"61459118bad444675eba434efffc250b61ad701d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":80,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":81,"context_line":"            if interactive or prompt:"},{"line_number":82,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":83,"context_line":"                if passphrase and passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":84,"context_line":"                    validated \u003d False"},{"line_number":85,"context_line":"                    while not validated:"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_28780ac2","line":82,"in_reply_to":"7faddb67_8437bbff","updated":"2019-07-16 16:24:48.000000000","message":"Not a bad idea, I didn\u0027t get it in for this patch but I will circle back and mark this as \"Done\" when I\u0027ve got it in place.","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f17bc16796ecd550f68e3171115ce50743c28a9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":83,"context_line":"                if passphrase and passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":84,"context_line":"                    validated \u003d False"},{"line_number":85,"context_line":"                    while not validated:"},{"line_number":86,"context_line":"                        # If we can validate this is a UUID for a UUID type"},{"line_number":87,"context_line":"                        # passphrase, move on to next steps"},{"line_number":88,"context_line":"                        try:"},{"line_number":89,"context_line":"                            uuid.UUID(passphrase)"},{"line_number":90,"context_line":"                            validated \u003d True"},{"line_number":91,"context_line":"                        # If not, let the user know the UUID is invalid,"},{"line_number":92,"context_line":"                        # prompt them to try again, and check the result."},{"line_number":93,"context_line":"                        except ValueError as e:"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_04b0ab89","line":90,"range":{"start_line":85,"start_character":20,"end_line":90,"end_character":44},"updated":"2019-07-15 17:48:04.000000000","message":"If you prefer, you can use this instead: https://github.com/openstack/oslo.utils/blob/1b8bafb391b82665b99b3da8205402ec2cd495d1/oslo_utils/uuidutils.py#L45\n\nWhich will make the subsequent code below more foolproof and cleaner, too.","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"61459118bad444675eba434efffc250b61ad701d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":83,"context_line":"                if passphrase and passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":84,"context_line":"                    validated \u003d False"},{"line_number":85,"context_line":"                    while not validated:"},{"line_number":86,"context_line":"                        # If we can validate this is a UUID for a UUID type"},{"line_number":87,"context_line":"                        # passphrase, move on to next steps"},{"line_number":88,"context_line":"                        try:"},{"line_number":89,"context_line":"                            uuid.UUID(passphrase)"},{"line_number":90,"context_line":"                            validated \u003d True"},{"line_number":91,"context_line":"                        # If not, let the user know the UUID is invalid,"},{"line_number":92,"context_line":"                        # prompt them to try again, and check the result."},{"line_number":93,"context_line":"                        except ValueError as e:"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_057bb7bd","line":90,"range":{"start_line":85,"start_character":20,"end_line":90,"end_character":44},"in_reply_to":"7faddb67_04b0ab89","updated":"2019-07-16 16:24:48.000000000","message":"Done","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f17bc16796ecd550f68e3171115ce50743c28a9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                        # If not, let the user know the UUID is invalid,"},{"line_number":92,"context_line":"                        # prompt them to try again, and check the result."},{"line_number":93,"context_line":"                        except ValueError as e:"},{"line_number":94,"context_line":"                            print(e)"},{"line_number":95,"context_line":"                            passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":96,"context_line":"                            continue"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_24b5a77e","line":94,"range":{"start_line":94,"start_character":28,"end_line":94,"end_character":33},"updated":"2019-07-15 17:48:04.000000000","message":"nit: can use click.echo here instead","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"61459118bad444675eba434efffc250b61ad701d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                        # If not, let the user know the UUID is invalid,"},{"line_number":92,"context_line":"                        # prompt them to try again, and check the result."},{"line_number":93,"context_line":"                        except ValueError as e:"},{"line_number":94,"context_line":"                            print(e)"},{"line_number":95,"context_line":"                            passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":96,"context_line":"                            continue"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_45752fca","line":94,"range":{"start_line":94,"start_character":28,"end_line":94,"end_character":33},"in_reply_to":"7faddb67_24b5a77e","updated":"2019-07-16 16:24:48.000000000","message":"Done","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4f17bc16796ecd550f68e3171115ce50743c28a9","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            if not passphrase:"},{"line_number":99,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":100,"context_line":"                    passphrase \u003d str(uuid.uuid4())"},{"line_number":101,"context_line":"                else:"},{"line_number":102,"context_line":"                    passphrase \u003d self._pass_util.get_crypto_string("},{"line_number":103,"context_line":"                        self._catalog.get_length(p_name))"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_a47d17b3","line":100,"range":{"start_line":100,"start_character":20,"end_line":100,"end_character":50},"updated":"2019-07-15 17:48:04.000000000","message":"Likewise, you can use: https://github.com/openstack/oslo.utils/blob/1b8bafb391b82665b99b3da8205402ec2cd495d1/oslo_utils/uuidutils.py#L25","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"61459118bad444675eba434efffc250b61ad701d","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"            if not passphrase:"},{"line_number":99,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":100,"context_line":"                    passphrase \u003d str(uuid.uuid4())"},{"line_number":101,"context_line":"                else:"},{"line_number":102,"context_line":"                    passphrase \u003d self._pass_util.get_crypto_string("},{"line_number":103,"context_line":"                        self._catalog.get_length(p_name))"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_e57d3bb2","line":100,"range":{"start_line":100,"start_character":20,"end_line":100,"end_character":50},"in_reply_to":"7faddb67_a47d17b3","updated":"2019-07-16 16:24:48.000000000","message":"Done","commit_id":"2d2ff528431207d5efb3d18049a10085d9f7c1bf"},{"author":{"_account_id":28235,"name":"Aaron Sheffield","email":"ajs@sheffieldfamily.net","username":"aaronsheffield"},"change_message_id":"dfa3a240cd837bc64649d7dad41e27b0e4473b5c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                        passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":91,"context_line":"                        validated \u003d uuidutils.is_uuid_like(passphrase)\r"},{"line_number":92,"context_line":"\r"},{"line_number":93,"context_line":"                if passphrase_type \u003d\u003d \u0027base64\u0027:  # nosec\r"},{"line_number":94,"context_line":"                    validated \u003d self.is_base64_like(passphrase)\r"},{"line_number":95,"context_line":"                    while passphrase and not validated:\r"},{"line_number":96,"context_line":"                        click.echo(\u0027Passphrase {} is not base64 like.\u0027)\r"}],"source_content_type":"text/x-python","patch_set":26,"id":"7faddb67_947589fc","line":93,"range":{"start_line":93,"start_character":16,"end_line":93,"end_character":18},"updated":"2019-07-17 15:46:05.000000000","message":"Can be an elif.","commit_id":"7d476ec9ee5ec38adccc636ee4efa2b5f5c55262"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"9f26630e8e06c144f45a921dfd6f6b811cd70980","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                        passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":91,"context_line":"                        validated \u003d uuidutils.is_uuid_like(passphrase)\r"},{"line_number":92,"context_line":"\r"},{"line_number":93,"context_line":"                if passphrase_type \u003d\u003d \u0027base64\u0027:  # nosec\r"},{"line_number":94,"context_line":"                    validated \u003d self.is_base64_like(passphrase)\r"},{"line_number":95,"context_line":"                    while passphrase and not validated:\r"},{"line_number":96,"context_line":"                        click.echo(\u0027Passphrase {} is not base64 like.\u0027)\r"}],"source_content_type":"text/x-python","patch_set":26,"id":"7faddb67_af2f0e86","line":93,"range":{"start_line":93,"start_character":16,"end_line":93,"end_character":18},"in_reply_to":"7faddb67_947589fc","updated":"2019-07-17 15:59:09.000000000","message":"Done","commit_id":"7d476ec9ee5ec38adccc636ee4efa2b5f5c55262"},{"author":{"_account_id":25731,"name":"Stacey Fletcher","email":"staceylynnfletcher@gmail.com","username":"StaceyFletcher"},"change_message_id":"d7818a58313b1a399812fe902ba52ec600082adb","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            passphrase \u003d None"},{"line_number":82,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":83,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":84,"context_line":"            if interactive or prompt:"},{"line_number":85,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_ea22d4b8","line":84,"updated":"2019-07-17 17:49:14.000000000","message":"Not sure how interactive fits in here.  If prompt is set to true then it is by default going to need to prompt for the value to set this to right?","commit_id":"2442a22b5346f24480e55d0b9d9b0dfa81477c74"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"c4972d80aaeeff98afde38a8a7c6511e0a5b8450","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            passphrase \u003d None"},{"line_number":82,"context_line":"            passphrase_type \u003d self._catalog.get_passphrase_type(p_name)"},{"line_number":83,"context_line":"            prompt \u003d self._catalog.is_passphrase_prompt(p_name)"},{"line_number":84,"context_line":"            if interactive or prompt:"},{"line_number":85,"context_line":"                passphrase \u003d self.get_interactive_pass(p_name)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_cceb7575","line":84,"in_reply_to":"7faddb67_ea22d4b8","updated":"2019-07-17 18:43:22.000000000","message":"In passphrase_catalog line 33 of [0] we set the prompt value to False if it\u0027s not specified in the passphrase catalog.\n\nAt the CLI if --interactive is used, or in the passphrase catalog if prompt: True is used then we get into interactive mode and let the user create their own secret.  If the type specified in the passphrase catalog is either uuid or base64 we validate that they are uuid or base64 like strings.\n\nIf they are not, they are prompted to try again.  At the new prompt they will have the option to leave blank and exit interactive mode to use automatic generation instead.  Any time a validation checks is failed the user gets a message that the passphrase entered is not a uuid like or base64 like string depending on the type specified in passphrase catalog.\n\n[0] https://review.opendev.org/#/c/669743/29/pegleg/engine/catalogs/passphrase_catalog.py","commit_id":"2442a22b5346f24480e55d0b9d9b0dfa81477c74"},{"author":{"_account_id":25731,"name":"Stacey Fletcher","email":"staceylynnfletcher@gmail.com","username":"StaceyFletcher"},"change_message_id":"d7818a58313b1a399812fe902ba52ec600082adb","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                        validated \u003d self.is_base64_like(passphrase)"},{"line_number":100,"context_line":"                    if passphrase:"},{"line_number":101,"context_line":"                        passphrase \u003d passphrase.encode()  # Change to bytes"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            if not passphrase:"},{"line_number":104,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":105,"context_line":"                    passphrase \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_8a06c01f","line":102,"updated":"2019-07-17 17:49:14.000000000","message":"What are we doing with a type of passphrase and also prompt?  mechID would have to be covered right?","commit_id":"2442a22b5346f24480e55d0b9d9b0dfa81477c74"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"c4972d80aaeeff98afde38a8a7c6511e0a5b8450","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                        validated \u003d self.is_base64_like(passphrase)"},{"line_number":100,"context_line":"                    if passphrase:"},{"line_number":101,"context_line":"                        passphrase \u003d passphrase.encode()  # Change to bytes"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            if not passphrase:"},{"line_number":104,"context_line":"                if passphrase_type \u003d\u003d \u0027uuid\u0027:  # nosec"},{"line_number":105,"context_line":"                    passphrase \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":29,"id":"7faddb67_8c86ddb8","line":102,"in_reply_to":"7faddb67_8a06c01f","updated":"2019-07-17 18:43:22.000000000","message":"The only 3 categories of secrets we\u0027re supporting in passphrase catalogs are UUID and random passphrases that are either normal strings or base64 encoded.  All 3 cases also support user generated secrets, verification will be done to make sure they\u0027re the right \"type\" of secret, but no complexity requirements are enforced.  Please see previous comment for more detail\n\nDoes a mechid type need to be added?  This wasn\u0027t mentioned during the design call with Rodolfo.","commit_id":"2442a22b5346f24480e55d0b9d9b0dfa81477c74"}]}
