)]}'
{"nova/objects/fields.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2152e0dbf29facf76bb112d943773a76e4861fe3","unresolved":false,"context_lines":[{"line_number":940,"context_line":"    AUTO_TYPE \u003d NonNegativeInteger()"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"class EncryptionProdvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"noop\""},{"line_number":945,"context_line":"    LUKS \u003d \"luks\""},{"line_number":946,"context_line":"    PLAIN \u003d \"plain\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_a573b7e6","line":943,"range":{"start_line":943,"start_character":16,"end_line":943,"end_character":25},"updated":"2016-11-04 18:44:12.000000000","message":"Provider\n\nI\u0027m not really sure we need object fields for this just to define an enum though - this isn\u0027t stored in any nova objects. It probably makes sense to have this in Cinder though for the encrypted volume type.","commit_id":"90d0f432f4d10cd8278e57a92200f067fcaad946"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2152e0dbf29facf76bb112d943773a76e4861fe3","unresolved":false,"context_lines":[{"line_number":941,"context_line":""},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"class EncryptionProdvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"noop\""},{"line_number":945,"context_line":"    LUKS \u003d \"luks\""},{"line_number":946,"context_line":"    PLAIN \u003d \"plain\""},{"line_number":947,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_65ba7f70","line":944,"range":{"start_line":944,"start_character":12,"end_line":944,"end_character":16},"updated":"2016-11-04 18:44:12.000000000","message":"NoOpEncryptor","commit_id":"90d0f432f4d10cd8278e57a92200f067fcaad946"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2152e0dbf29facf76bb112d943773a76e4861fe3","unresolved":false,"context_lines":[{"line_number":942,"context_line":""},{"line_number":943,"context_line":"class EncryptionProdvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"noop\""},{"line_number":945,"context_line":"    LUKS \u003d \"luks\""},{"line_number":946,"context_line":"    PLAIN \u003d \"plain\""},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    ALL \u003d (NOOP, LUKS, PLAIN)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_25c087e0","line":945,"range":{"start_line":945,"start_character":12,"end_line":945,"end_character":16},"updated":"2016-11-04 18:44:12.000000000","message":"This would need to be LuksEncryptor to be backward compatible.","commit_id":"90d0f432f4d10cd8278e57a92200f067fcaad946"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2152e0dbf29facf76bb112d943773a76e4861fe3","unresolved":false,"context_lines":[{"line_number":943,"context_line":"class EncryptionProdvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"noop\""},{"line_number":945,"context_line":"    LUKS \u003d \"luks\""},{"line_number":946,"context_line":"    PLAIN \u003d \"plain\""},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    ALL \u003d (NOOP, LUKS, PLAIN)"},{"line_number":949,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_459e5b08","line":946,"updated":"2016-11-04 18:44:12.000000000","message":"CryptsetupEncryptor?","commit_id":"90d0f432f4d10cd8278e57a92200f067fcaad946"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"851320ebe9d64463fe1ed5c9638b6b24ca7888c3","unresolved":false,"context_lines":[{"line_number":943,"context_line":"class EncryptionProvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"NoOpEncryptor\""},{"line_number":945,"context_line":"    LUKS \u003d \"LuksEncryptor\""},{"line_number":946,"context_line":"    PLAIN \u003d \"CryptsetupEncryptor\""},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    ALL \u003d (NOOP, LUKS, PLAIN)"},{"line_number":949,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_bd7da7e9","line":946,"updated":"2016-11-07 09:47:36.000000000","message":"I agree with Matt\u0027s previous comments that we should not use an object enum for this - just define constants in the crypt code.\n\nFurther, the constants / enum name you\u0027ve got here is still expressing an specific implementation - we need to express a encryption format. Finally, we should not define a no-op encryptor - it adds no value - a format of None can express no-encryption required just fine.\n\nSo, I\u0027d just expect to see two constants\n\n  LUKS \u003d \"luks\"\n  PLAIN \u003d \"plain\"","commit_id":"ec49e2770c0ad9a8321fe90718ffd0c6bca8fd6c"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"0d0cd29150aa28c3a07d3e812181480387915bc6","unresolved":false,"context_lines":[{"line_number":943,"context_line":"class EncryptionProvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"NoOpEncryptor\""},{"line_number":945,"context_line":"    LUKS \u003d \"LuksEncryptor\""},{"line_number":946,"context_line":"    PLAIN \u003d \"CryptsetupEncryptor\""},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    ALL \u003d (NOOP, LUKS, PLAIN)"},{"line_number":949,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_0ce2d9d5","line":946,"updated":"2016-11-07 14:45:21.000000000","message":"Thanks, I\u0027ll move this over to the crypt code now. As for the NoOpEncrytor, shouldn\u0027t we deprecate for a cycle first just on the off chance that someone is actually using it?","commit_id":"ec49e2770c0ad9a8321fe90718ffd0c6bca8fd6c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"749e44feef250a7192ff2a6dfe85dbab805d6b70","unresolved":false,"context_lines":[{"line_number":943,"context_line":"class EncryptionProvider(BaseEnumField):"},{"line_number":944,"context_line":"    NOOP \u003d \"NoOpEncryptor\""},{"line_number":945,"context_line":"    LUKS \u003d \"LuksEncryptor\""},{"line_number":946,"context_line":"    PLAIN \u003d \"CryptsetupEncryptor\""},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    ALL \u003d (NOOP, LUKS, PLAIN)"},{"line_number":949,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a629dbe_cf69b38d","line":946,"in_reply_to":"9a629dbe_0ce2d9d5","updated":"2016-11-07 14:57:11.000000000","message":"Yes, we must have deprecation cycle - i just meant we don\u0027t want that in the long term supportable format enum.","commit_id":"ec49e2770c0ad9a8321fe90718ffd0c6bca8fd6c"}],"nova/volume/encryptors/__init__.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2152e0dbf29facf76bb112d943773a76e4861fe3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # provider is not found in SUPPORTED_ENCRYPTION_PROVIDERS"},{"line_number":53,"context_line":"        elif provider not in SUPPORTED_ENCRYPTION_PROVIDERS.values():"},{"line_number":54,"context_line":"            LOG.warning(_LW(\"Use of the unsupported encryptor class \""},{"line_number":55,"context_line":"                            \"%(provider) will be blocked with the Pike \""},{"line_number":56,"context_line":"                            \"release of Nova.\"), {\u0027provider\u0027: provider})"},{"line_number":57,"context_line":"        try:"},{"line_number":58,"context_line":"            encryptor \u003d importutils.import_object(provider, connection_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5da102_c557cb24","line":55,"range":{"start_line":55,"start_character":66,"end_line":55,"end_character":70},"updated":"2016-11-04 18:44:12.000000000","message":"Let\u0027s say 16.0.0 Pike release here.","commit_id":"90d0f432f4d10cd8278e57a92200f067fcaad946"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"31f9b41623b766b5e11038ddb7c4677909011b79","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LUKS \u003d \"luks\""},{"line_number":28,"context_line":"PLAIN \u003d \"plain\""},{"line_number":29,"context_line":"NOOP \u003d \"noop\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SUPPORTED_ENCRYPTION_PROVIDERS \u003d {"},{"line_number":32,"context_line":"    LUKS: \u0027nova.volume.encryptors.luks.LuksEncryptor\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_9daa9118","line":29,"updated":"2016-11-07 15:56:16.000000000","message":"I\u0027d not expect to see NOOP listed here.","commit_id":"58e52a8137e1c9a3560f7a0f8a9caf85ddb337d7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"31f9b41623b766b5e11038ddb7c4677909011b79","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    LUKS: \u0027nova.volume.encryptors.luks.LuksEncryptor\u0027,"},{"line_number":33,"context_line":"    PLAIN: \u0027nova.volume.encryptors.cryptsetup.CryptsetupEncryptor\u0027,"},{"line_number":34,"context_line":"    NOOP: \u0027nova.volume.encryptors.nop.NoOpEncryptor\u0027"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def get_volume_encryptor(connection_info, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_18a5af03","line":35,"updated":"2016-11-07 15:56:16.000000000","message":"I think I\u0027d prefer to see clean separation of legacy providers from encryption formats. So perhaps better to have 2 maps\n\nFORMAT_TO_ENCRYPTOR_MAP \u003d {\n    LUKS: \u0027nova.volume.encryptors.luks.LuksEncryptor\u0027,\n    PLAIN: \u0027nova.volume.encryptors.cryptsetup.CryptsetupEncryptor\u0027,\n}\n\n\nLEGACY_PROVIDER_CLASS_TO_FORMAT_MAP {\n    \"nova.volume.encryptors.luks.LuksEncryptor\": LUKS,\n    \"nova.volume.encryptors.luks.CryptsetupEncryptor\": PLAIN,\n    \"nova.volume.encryptors.luks.NoopEncryptor\": None,\n    \"LuksEncryptor\": LUKS,\n    \"CryptsetupEncryptor\": PLAIN,\n    \"NoopEncryptor\": None,\n}","commit_id":"58e52a8137e1c9a3560f7a0f8a9caf85ddb337d7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"31f9b41623b766b5e11038ddb7c4677909011b79","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            LOG.warning(_LW(\"Use of the supported encryptor class %(provider)s\""},{"line_number":59,"context_line":"                            \" by directly referencing the implementation class\""},{"line_number":60,"context_line":"                            \" will be blocked in the 16.0.0 Pike release of \""},{"line_number":61,"context_line":"                            \"Nova.\"), {\u0027provider\u0027: provider})"},{"line_number":62,"context_line":"            provider \u003d next((p for p in SUPPORTED_ENCRYPTION_PROVIDERS.values()"},{"line_number":63,"context_line":"                                if provider in p))"},{"line_number":64,"context_line":"        elif provider not in SUPPORTED_ENCRYPTION_PROVIDERS.values():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_b8aa036f","line":61,"updated":"2016-11-07 15:56:16.000000000","message":"The previous code allowed fully qualified class, or bare class - this code allows any number of package prefixes to be dropped, eg luks.LuksEncryptor, encryptors.luks.LuksEncryptor, etc. I\u0027d rather we didn\u0027t allow more special cases than we already have.","commit_id":"58e52a8137e1c9a3560f7a0f8a9caf85ddb337d7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"31f9b41623b766b5e11038ddb7c4677909011b79","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        if provider \u003d\u003d SUPPORTED_ENCRYPTION_PROVIDERS[NOOP]:"},{"line_number":70,"context_line":"            LOG.warning(_LW(\"Use of the NoOpEncryptor encryptor class \""},{"line_number":71,"context_line":"                            \"is deprecated and will be removed with the \""},{"line_number":72,"context_line":"                            \"16.0.0 Pike release of Nova.\"))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        try:"},{"line_number":75,"context_line":"            encryptor \u003d importutils.import_object(provider, connection_info,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_18e84f7c","line":72,"updated":"2016-11-07 15:56:16.000000000","message":"I think it\u0027d be clearer if we structured it this way instad\n\n\n if provider is not None and provider in LEGACY_PROVIDER_CLASS_TO_FORMAT_MAP:\n     ...warning use of classnames...\n     provider \u003d LEGACY_PROVIDER_CLASS_TO_FORMAT_MAP[provider]\n\n if provider is None:\n    provider \u003d \"nova.volume.encryptors.nop.NoOpEncryptor\"\n else if provider in FORMAT_TO_ENCRYPTOR_MAP:\n    provider \u003d FORMAT_TO_ENCRYPTOR_MAP[provider]\n else:\n    ...warning about out of tree class...","commit_id":"58e52a8137e1c9a3560f7a0f8a9caf85ddb337d7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"198ce018bc280655fc166ac3c421b61526f61f48","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        elif provider is None:"},{"line_number":67,"context_line":"            LOG.warning(_LW(\"Use of the NoOpEncryptor encryptor class \""},{"line_number":68,"context_line":"                            \"is deprecated and will be removed with the \""},{"line_number":69,"context_line":"                            \"16.0.0 Pike release of Nova.\"))"},{"line_number":70,"context_line":"            provider \u003d \"nova.volume.encryptors.nop.NoOpEncryptor\""},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            LOG.warning(_LW(\"Use of the unsupported encryptor class \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_351d1974","line":69,"updated":"2016-11-07 17:10:59.000000000","message":"This code is run for all volumes whether encrypted or not, so we\u0027ll expect \"provider\" to be None quite often. All we need to deprecate is use of string \"NoOpEncryptor\" - we want people to leave provider unset (and thus None) instead of inventing a new string that means the same as None.","commit_id":"4b24f381bd159d887db275b946529a39748a2ab9"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"198ce018bc280655fc166ac3c421b61526f61f48","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                            \"16.0.0 Pike release of Nova.\"))"},{"line_number":70,"context_line":"            provider \u003d \"nova.volume.encryptors.nop.NoOpEncryptor\""},{"line_number":71,"context_line":"        else:"},{"line_number":72,"context_line":"            LOG.warning(_LW(\"Use of the unsupported encryptor class \""},{"line_number":73,"context_line":"                            \"%(provider)s will be blocked with the 16.0.0 \""},{"line_number":74,"context_line":"                            \"Pike release of Nova.\"), {\u0027provider\u0027: provider})"},{"line_number":75,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a629dbe_282b0084","line":72,"updated":"2016-11-07 17:10:59.000000000","message":"Lets say \"out of tree\" instead of \"unsupported\"","commit_id":"4b24f381bd159d887db275b946529a39748a2ab9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f1e3e3a46b65cb2bd9c31335340eef3c49ae8237","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    msg \u003d (\"Using volume encryptor \u0027%(encryptor)s\u0027 for connection: \""},{"line_number":81,"context_line":"           \"%(connection_info)s\" %"},{"line_number":82,"context_line":"           {\u0027encryptor\u0027: encryptor, \u0027connection_info\u0027: connection_info})"},{"line_number":83,"context_line":"    LOG.debug(strutils.mask_password(msg))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    return encryptor"}],"source_content_type":"text/x-python","patch_set":12,"id":"dfeb2761_8614a845","line":82,"range":{"start_line":82,"start_character":25,"end_line":82,"end_character":34},"updated":"2017-04-04 14:33:11.000000000","message":"If control_location is not in kwargs, this is not defined and you\u0027re going to explode.","commit_id":"cbbc21828283e5dbd45016c1bc5fc24c2c20f365"}]}
