)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement backend driver support for domain config"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the backend driver storage for domain configs, both"},{"line_number":10,"context_line":"whitelisted and sensitive. A subsequent pathc will add the support in"},{"line_number":11,"context_line":"the manager layer for actually implementing the whitelist checking,"},{"line_number":12,"context_line":"using the underlying driver provided in this patch."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba7be1f8_e7650346","line":10,"updated":"2015-02-22 07:59:28.000000000","message":"patch*","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement backend driver support for domain config"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for the backend driver storage for domain configs, both"},{"line_number":10,"context_line":"whitelisted and sensitive. A subsequent pathc will add the support in"},{"line_number":11,"context_line":"the manager layer for actually implementing the whitelist checking,"},{"line_number":12,"context_line":"using the underlying driver provided in this patch."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba7be1f8_02d205d2","line":10,"in_reply_to":"ba7be1f8_e7650346","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"}],"keystone/common/config.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                           \u0027DomainConfig\u0027,"},{"line_number":430,"context_line":"                   help\u003d\u0027Domain config backend driver.\u0027),"},{"line_number":431,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":432,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":433,"context_line":"                                                       group\u003d\u0027domain_config\u0027)],"},{"line_number":434,"context_line":"                    help\u003d\u0027Toggle for domain config caching. This has no \u0027"},{"line_number":435,"context_line":"                         \u0027effect unless global caching is enabled.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_47540f54","line":432,"updated":"2015-02-22 07:59:28.000000000","message":"why add a deprecated group? this is a new option.","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                           \u0027DomainConfig\u0027,"},{"line_number":430,"context_line":"                   help\u003d\u0027Domain config backend driver.\u0027),"},{"line_number":431,"context_line":"        cfg.BoolOpt(\u0027caching\u0027, default\u003dTrue,"},{"line_number":432,"context_line":"                    deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027caching\u0027,"},{"line_number":433,"context_line":"                                                       group\u003d\u0027domain_config\u0027)],"},{"line_number":434,"context_line":"                    help\u003d\u0027Toggle for domain config caching. This has no \u0027"},{"line_number":435,"context_line":"                         \u0027effect unless global caching is enabled.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_22d709c3","line":432,"in_reply_to":"ba7be1f8_47540f54","updated":"2015-02-22 10:46:39.000000000","message":"oops, copy \u0026 paste! In fact, I\u0027ll add caching in a subsequent patch","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                    help\u003d\u0027Toggle for domain config caching. This has no \u0027"},{"line_number":435,"context_line":"                         \u0027effect unless global caching is enabled.\u0027),"},{"line_number":436,"context_line":"        cfg.IntOpt(\u0027cache_time\u0027,"},{"line_number":437,"context_line":"                   deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027cache_time\u0027,"},{"line_number":438,"context_line":"                                                      group\u003d\u0027domain_config\u0027)],"},{"line_number":439,"context_line":"                   help\u003d\u0027TTL (in seconds) to cache domain config data. This \u0027"},{"line_number":440,"context_line":"                        \u0027has  no effect unless global caching is enabled.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_874e07c0","line":437,"updated":"2015-02-22 07:59:28.000000000","message":"same as above","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                    help\u003d\u0027Toggle for domain config caching. This has no \u0027"},{"line_number":435,"context_line":"                         \u0027effect unless global caching is enabled.\u0027),"},{"line_number":436,"context_line":"        cfg.IntOpt(\u0027cache_time\u0027,"},{"line_number":437,"context_line":"                   deprecated_opts\u003d[cfg.DeprecatedOpt(\u0027cache_time\u0027,"},{"line_number":438,"context_line":"                                                      group\u003d\u0027domain_config\u0027)],"},{"line_number":439,"context_line":"                   help\u003d\u0027TTL (in seconds) to cache domain config data. This \u0027"},{"line_number":440,"context_line":"                        \u0027has  no effect unless global caching is enabled.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_42db1ded","line":437,"in_reply_to":"ba7be1f8_874e07c0","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1f3a7e0666cd9920b8abeef0b63ead234fe0e431","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                         \u0027stored with the domain data. This feature is \u0027"},{"line_number":141,"context_line":"                         \u0027disabled by default (in which case the domain \u0027"},{"line_number":142,"context_line":"                         \u0027specific options will be loaded from files in the \u0027"},{"line_number":143,"context_line":"                         \u0027domain configuration directory); set to true to \u0027"},{"line_number":144,"context_line":"                         \u0027enable. This feature is not yet supported.\u0027),"},{"line_number":145,"context_line":"        cfg.StrOpt(\u0027domain_config_dir\u0027,"},{"line_number":146,"context_line":"                   default\u003d\u0027/etc/keystone/domains\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_28327910","line":143,"updated":"2015-02-23 13:22:27.000000000","message":"will remove the last sentence in the following patch?","commit_id":"c5524ee2942048484d0fa3b51a3c0d46c2bc6a1c"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1f3a7e0666cd9920b8abeef0b63ead234fe0e431","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":428,"context_line":"                   default\u003d\u0027keystone.resource.config_backends.sql.\u0027"},{"line_number":429,"context_line":"                           \u0027DomainConfig\u0027,"},{"line_number":430,"context_line":"                   help\u003d\u0027Domain config backend driver.\u0027),"},{"line_number":431,"context_line":"    ],"},{"line_number":432,"context_line":"    \u0027role\u0027: ["},{"line_number":433,"context_line":"        # The role driver has no default for backward compatibility reasons."}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_054afeab","line":430,"updated":"2015-02-23 13:22:27.000000000","message":"is the \"file\" backend a driver to be specified here?","commit_id":"c5524ee2942048484d0fa3b51a3c0d46c2bc6a1c"}],"keystone/common/sql/migrate_repo/versions/065_add_domain_config.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    whitelist_table \u003d sql.Table("},{"line_number":26,"context_line":"        WHITELIST_TABLE,"},{"line_number":27,"context_line":"        meta,"},{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027config\u0027, ks_sql.JsonBlob.impl, nullable\u003dFalse),"},{"line_number":30,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":31,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_27d71bc3","line":28,"updated":"2015-02-22 07:59:28.000000000","message":"this could be a foreign key to the domain table, but not really essential if it\u0027s not","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    whitelist_table \u003d sql.Table("},{"line_number":26,"context_line":"        WHITELIST_TABLE,"},{"line_number":27,"context_line":"        meta,"},{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027config\u0027, ks_sql.JsonBlob.impl, nullable\u003dFalse),"},{"line_number":30,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":31,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_82e515aa","line":28,"in_reply_to":"ba7be1f8_27d71bc3","updated":"2015-02-22 10:46:39.000000000","message":"I did think about that....but with our plans for domains, not sure it is worth it...","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        WHITELIST_TABLE,"},{"line_number":27,"context_line":"        meta,"},{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027config\u0027, ks_sql.JsonBlob.impl, nullable\u003dFalse),"},{"line_number":30,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":31,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":32,"context_line":"    whitelist_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_e7f34371","line":29,"updated":"2015-02-22 07:59:28.000000000","message":"nit: apparently this is just sql.Text, so you could use that and drop the ks_sql import","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        WHITELIST_TABLE,"},{"line_number":27,"context_line":"        meta,"},{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027config\u0027, ks_sql.JsonBlob.impl, nullable\u003dFalse),"},{"line_number":30,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":31,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":32,"context_line":"    whitelist_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_a2e2199d","line":29,"in_reply_to":"ba7be1f8_e7f34371","updated":"2015-02-22 10:46:39.000000000","message":"just keeping with convention...","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    sensitive_table \u003d sql.Table("},{"line_number":35,"context_line":"        SENSITIVE_TABLE,"},{"line_number":36,"context_line":"        meta,"},{"line_number":37,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":38,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), nullable\u003dFalse),"},{"line_number":39,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), nullable\u003dFalse),"},{"line_number":40,"context_line":"        sql.Column(\u0027value\u0027, sql.String(255), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_47db2fed","line":37,"updated":"2015-02-22 07:59:28.000000000","message":"same as above","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":30,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":31,"context_line":"        sql.Column(\u0027value\u0027, ks_sql.JsonBlob.impl),"},{"line_number":32,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":33,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":34,"context_line":"    whitelist_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_ac89eb27","line":31,"updated":"2015-03-02 21:39:51.000000000","message":"Please add nullable\u003dFalse, as defined in keystone/resource/config_backends/sql.py","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"5285688547822bbff54aaf309bbe0ee2817eee4c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":30,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":31,"context_line":"        sql.Column(\u0027value\u0027, ks_sql.JsonBlob.impl),"},{"line_number":32,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":33,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":34,"context_line":"    whitelist_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_8c70a741","line":31,"updated":"2015-03-02 21:14:00.000000000","message":"who\u0027s converting JSON back to something oslo config can understand?","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":30,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":31,"context_line":"        sql.Column(\u0027value\u0027, ks_sql.JsonBlob.impl),"},{"line_number":32,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":33,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":34,"context_line":"    whitelist_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_27b1948f","line":31,"in_reply_to":"ba7be1f8_8c70a741","updated":"2015-03-02 21:59:50.000000000","message":"Its a decorated version of sql_type - see common/sql/core.py.  You\u0027ll note that the tests contains both strings and integers","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":29,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":30,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":31,"context_line":"        sql.Column(\u0027value\u0027, ks_sql.JsonBlob.impl),"},{"line_number":32,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":33,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":34,"context_line":"    whitelist_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_87dfa0d5","line":31,"in_reply_to":"ba7be1f8_ac89eb27","updated":"2015-03-02 21:59:50.000000000","message":"Done","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":40,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":41,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":42,"context_line":"        sql.Column(\u0027value\u0027, ks_sql.JsonBlob.impl),"},{"line_number":43,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":44,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":45,"context_line":"    sensitive_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_ec7f6315","line":42,"updated":"2015-03-02 21:39:51.000000000","message":"Please add nullable\u003dFalse, as defined in keystone/resource/config_backends/sql.py","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        sql.Column(\u0027domain_id\u0027, sql.String(64), primary_key\u003dTrue),"},{"line_number":40,"context_line":"        sql.Column(\u0027group\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":41,"context_line":"        sql.Column(\u0027option\u0027, sql.String(255), primary_key\u003dTrue),"},{"line_number":42,"context_line":"        sql.Column(\u0027value\u0027, ks_sql.JsonBlob.impl),"},{"line_number":43,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":44,"context_line":"        mysql_charset\u003d\u0027utf8\u0027)"},{"line_number":45,"context_line":"    sensitive_table.create(migrate_engine, checkfirst\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_c7f4385d","line":42,"in_reply_to":"ba7be1f8_ec7f6315","updated":"2015-03-02 21:59:50.000000000","message":"Done","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"}],"keystone/exception.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"86d462c3298553aceeac5181e51146a874eccc53","unresolved":false,"context_lines":[{"line_number":338,"context_line":"class DomainConfigNotFound(NotFound):"},{"line_number":339,"context_line":"    message_format \u003d _(\u0027Could not find Domain Configuration for domain: \u0027"},{"line_number":340,"context_line":"                       \u0027%(domain_id)s, for group: %(group)s and \u0027"},{"line_number":341,"context_line":"                       \u0027option: %(option)s\u0027)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_5000cb01","line":341,"updated":"2015-03-03 19:07:27.000000000","message":"remove the :s... : is supposed to introduce a list and that\u0027s not what they\u0027re used for here.","commit_id":"508b11a5b852e04d753b699338934602419dce7c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1d8797f1cca8a23e960ba2c4ae81862d2d888ae","unresolved":false,"context_lines":[{"line_number":338,"context_line":"class DomainConfigNotFound(NotFound):"},{"line_number":339,"context_line":"    message_format \u003d _(\u0027Could not find Domain Configuration for domain: \u0027"},{"line_number":340,"context_line":"                       \u0027%(domain_id)s, for group: %(group)s and \u0027"},{"line_number":341,"context_line":"                       \u0027option: %(option)s\u0027)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"class Conflict(Error):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_a3f0e3fd","line":341,"in_reply_to":"ba7be1f8_5000cb01","updated":"2015-03-03 19:15:39.000000000","message":"I will raise an explicit defect for this as a follow up.","commit_id":"508b11a5b852e04d753b699338934602419dce7c"}],"keystone/resource/config_backends/sql.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba7be1f8_27739bea","updated":"2015-02-22 07:59:28.000000000","message":"why no list function?","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba7be1f8_2241c95a","in_reply_to":"ba7be1f8_27739bea","updated":"2015-02-22 10:46:39.000000000","message":"I didn\u0027t put one in the API spec, since I was concerned about whether from a UX perspective, it made send...and the filtering you might want to do on it becomes a bit yukky.  Maybe we\u0027ll add this next release if we see the need...","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        with sql.transaction() as session:"},{"line_number":39,"context_line":"            ref \u003d WhiteListedConfig(domain_id\u003ddomain_id, config\u003dconfig)"},{"line_number":40,"context_line":"            session.add(ref)"},{"line_number":41,"context_line":"            return config"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _get_config(self, session, domain_id):"},{"line_number":44,"context_line":"        ref \u003d session.query(WhiteListedConfig).get(domain_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_07a05742","line":41,"updated":"2015-02-22 07:59:28.000000000","message":"place the return outside of the with statement","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        with sql.transaction() as session:"},{"line_number":39,"context_line":"            ref \u003d WhiteListedConfig(domain_id\u003ddomain_id, config\u003dconfig)"},{"line_number":40,"context_line":"            session.add(ref)"},{"line_number":41,"context_line":"            return config"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _get_config(self, session, domain_id):"},{"line_number":44,"context_line":"        ref \u003d session.query(WhiteListedConfig).get(domain_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_42b07d8b","line":41,"in_reply_to":"ba7be1f8_07a05742","updated":"2015-02-22 10:46:39.000000000","message":"Damn...I\u0027ve made that mistake before...","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_config(self, domain_id):"},{"line_number":50,"context_line":"        with sql.transaction() as session:"},{"line_number":51,"context_line":"            return self._get_config(session, domain_id).config"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_config(self, domain_id, config):"},{"line_number":54,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_27bc7b69","line":51,"updated":"2015-02-22 07:59:28.000000000","message":"1. return outside of the with statement.\n2. why use .config? \n\n  with sql.transaction() as session:\n    config_ref \u003d self._get_config(session, domain_id)\n  return config_ref.config\n\nor \n\n  return config_ref.to_dict()","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_config(self, domain_id):"},{"line_number":50,"context_line":"        with sql.transaction() as session:"},{"line_number":51,"context_line":"            return self._get_config(session, domain_id).config"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def update_config(self, domain_id, config):"},{"line_number":54,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_22bc6969","line":51,"in_reply_to":"ba7be1f8_27bc7b69","updated":"2015-02-22 10:46:39.000000000","message":"so had not intended to return the domain_id....I could make  specific to_dict() I suppose that did this...","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        with sql.transaction() as session:"},{"line_number":55,"context_line":"            ref \u003d self._get_config(session, domain_id)"},{"line_number":56,"context_line":"            ref.config \u003d config"},{"line_number":57,"context_line":"            return config"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete_config(self, domain_id):"},{"line_number":60,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_47b08f8b","line":57,"updated":"2015-02-22 07:59:28.000000000","message":"return outside of the with statement\n\nalso i\u0027d use to_dict as you do in the code later on","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        with sql.transaction() as session:"},{"line_number":55,"context_line":"            ref \u003d self._get_config(session, domain_id)"},{"line_number":56,"context_line":"            ref.config \u003d config"},{"line_number":57,"context_line":"            return config"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def delete_config(self, domain_id):"},{"line_number":60,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_62ad8131","line":57,"in_reply_to":"ba7be1f8_47b08f8b","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            session.add(ref)"},{"line_number":70,"context_line":"            ret_ref \u003d ref.to_dict()"},{"line_number":71,"context_line":"            ret_ref.pop(\u0027domain_id\u0027)"},{"line_number":72,"context_line":"            return ret_ref"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_sensitive_config_option(self, session, domain_id, group, option):"},{"line_number":75,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_87aa8717","line":72,"updated":"2015-02-22 07:59:28.000000000","message":"return outside of the with statement","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            session.add(ref)"},{"line_number":70,"context_line":"            ret_ref \u003d ref.to_dict()"},{"line_number":71,"context_line":"            ret_ref.pop(\u0027domain_id\u0027)"},{"line_number":72,"context_line":"            return ret_ref"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_sensitive_config_option(self, session, domain_id, group, option):"},{"line_number":75,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_82aa7517","line":72,"in_reply_to":"ba7be1f8_87aa8717","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            ref \u003d (session.query(SensitiveConfig)."},{"line_number":77,"context_line":"                   filter_by(domain_id\u003ddomain_id, group\u003dgroup,"},{"line_number":78,"context_line":"                             option\u003doption).one())"},{"line_number":79,"context_line":"        except sql.NotFound:"},{"line_number":80,"context_line":"            raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":81,"context_line":"        return ref"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_475ecf46","line":79,"updated":"2015-02-22 07:59:28.000000000","message":"nice job here","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            ref \u003d (session.query(SensitiveConfig)."},{"line_number":77,"context_line":"                   filter_by(domain_id\u003ddomain_id, group\u003dgroup,"},{"line_number":78,"context_line":"                             option\u003doption).one())"},{"line_number":79,"context_line":"        except sql.NotFound:"},{"line_number":80,"context_line":"            raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":81,"context_line":"        return ref"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_a2a7794e","line":79,"in_reply_to":"ba7be1f8_475ecf46","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                                    group, option)"},{"line_number":87,"context_line":"            ret_ref \u003d ref.to_dict()"},{"line_number":88,"context_line":"            ret_ref.pop(\u0027domain_id\u0027)"},{"line_number":89,"context_line":"            return ret_ref"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def update_sensitive_config_option(self, domain_id, group, option, value):"},{"line_number":92,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_a7a78b4e","line":89,"updated":"2015-02-22 07:59:28.000000000","message":"return outside of the with statement","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                                    group, option)"},{"line_number":87,"context_line":"            ret_ref \u003d ref.to_dict()"},{"line_number":88,"context_line":"            ret_ref.pop(\u0027domain_id\u0027)"},{"line_number":89,"context_line":"            return ret_ref"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def update_sensitive_config_option(self, domain_id, group, option, value):"},{"line_number":92,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_c2638d18","line":89,"in_reply_to":"ba7be1f8_a7a78b4e","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            ref.value \u003d value"},{"line_number":96,"context_line":"            ret_ref \u003d ref.to_dict()"},{"line_number":97,"context_line":"            ret_ref.pop(\u0027domain_id\u0027)"},{"line_number":98,"context_line":"            return ret_ref"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def delete_sensitive_config_option(self, domain_id, group, option):"},{"line_number":101,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_c7639f18","line":98,"updated":"2015-02-22 07:59:28.000000000","message":"return outside of the with statement","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            ref.value \u003d value"},{"line_number":96,"context_line":"            ret_ref \u003d ref.to_dict()"},{"line_number":97,"context_line":"            ret_ref.pop(\u0027domain_id\u0027)"},{"line_number":98,"context_line":"            return ret_ref"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def delete_sensitive_config_option(self, domain_id, group, option):"},{"line_number":101,"context_line":"        with sql.transaction() as session:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_e26891f7","line":98,"in_reply_to":"ba7be1f8_c7639f18","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"5285688547822bbff54aaf309bbe0ee2817eee4c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                             sensitive\u003dFalse):"},{"line_number":100,"context_line":"        # NOTE(henry-nash): Since the public API is broken down into calls for"},{"line_number":101,"context_line":"        # delete in both the whitelisted and sensitive methods, we are silent"},{"line_number":102,"context_line":"        # at the driver level of there was nothing to delete."},{"line_number":103,"context_line":"        with sql.transaction() as session:"},{"line_number":104,"context_line":"            config_table \u003d self.choose_table(sensitive)"},{"line_number":105,"context_line":"            query \u003d session.query(config_table)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_8c99877b","line":102,"updated":"2015-03-02 21:14:00.000000000","message":"I don\u0027t understand this comment. Are we not doing bulk delete at line 111?","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                             sensitive\u003dFalse):"},{"line_number":100,"context_line":"        # NOTE(henry-nash): Since the public API is broken down into calls for"},{"line_number":101,"context_line":"        # delete in both the whitelisted and sensitive methods, we are silent"},{"line_number":102,"context_line":"        # at the driver level of there was nothing to delete."},{"line_number":103,"context_line":"        with sql.transaction() as session:"},{"line_number":104,"context_line":"            config_table \u003d self.choose_table(sensitive)"},{"line_number":105,"context_line":"            query \u003d session.query(config_table)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_677e2cb1","line":102,"in_reply_to":"ba7be1f8_8c99877b","updated":"2015-03-02 21:59:50.000000000","message":"yes, but only on one of the two tables at a time...","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fee379e38c647428ab0b5bc55e91fbb36723147b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class WhiteListedConfig(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":19,"context_line":"    __tablename__ \u003d \u0027whitelisted_config\u0027"},{"line_number":20,"context_line":"    domain_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":21,"context_line":"    group \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":22,"context_line":"    option \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":23,"context_line":"    value \u003d sql.Column(sql.JsonBlob(), nullable\u003dFalse)"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_f9c2b1e7","line":21,"updated":"2015-03-03 07:14:19.000000000","message":"i feel having three primary keys will lead to trouble","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":18,"context_line":"class WhiteListedConfig(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":19,"context_line":"    __tablename__ \u003d \u0027whitelisted_config\u0027"},{"line_number":20,"context_line":"    domain_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":21,"context_line":"    group \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":22,"context_line":"    option \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":23,"context_line":"    value \u003d sql.Column(sql.JsonBlob(), nullable\u003dFalse)"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_fb61be39","line":21,"in_reply_to":"ba7be1f8_f9c2b1e7","updated":"2015-03-03 14:30:05.000000000","message":"...and particular problems...we have multiple PKs elsewhere I think....and none of them can be null (which is where you can indeed get problems)","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fee379e38c647428ab0b5bc55e91fbb36723147b","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class SensitiveConfig(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":32,"context_line":"    __tablename__ \u003d \u0027sensitive_config\u0027"},{"line_number":33,"context_line":"    domain_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":34,"context_line":"    group \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":35,"context_line":"    option \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":36,"context_line":"    value \u003d sql.Column(sql.JsonBlob(), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_b97bd9bc","line":33,"updated":"2015-03-03 07:14:19.000000000","message":"nit: these are the same arguments as the whitelist table, could make a common base class","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class SensitiveConfig(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":32,"context_line":"    __tablename__ \u003d \u0027sensitive_config\u0027"},{"line_number":33,"context_line":"    domain_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":34,"context_line":"    group \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":35,"context_line":"    option \u003d sql.Column(sql.String(255), primary_key\u003dTrue)"},{"line_number":36,"context_line":"    value \u003d sql.Column(sql.JsonBlob(), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_e392f055","line":33,"in_reply_to":"ba7be1f8_b97bd9bc","updated":"2015-03-03 14:30:05.000000000","message":"So I did try that, but got conflicts within sqlalchemy....so decided, for clarity, to leave as is","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                   filter_by(domain_id\u003ddomain_id, group\u003dgroup,"},{"line_number":67,"context_line":"                             option\u003doption).one())"},{"line_number":68,"context_line":"        except sql.NotFound:"},{"line_number":69,"context_line":"            raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":70,"context_line":"        return ref"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def get_config_option(self, domain_id, group, option, sensitive\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_b314dfe9","line":69,"updated":"2015-03-03 01:43:25.000000000","message":"This will also raise NotFound if the group isn\u0027t in the table or the option isn\u0027t in the table, so just including the domain_id in the exception isn\u0027t adequate.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                   filter_by(domain_id\u003ddomain_id, group\u003dgroup,"},{"line_number":67,"context_line":"                             option\u003doption).one())"},{"line_number":68,"context_line":"        except sql.NotFound:"},{"line_number":69,"context_line":"            raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":70,"context_line":"        return ref"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def get_config_option(self, domain_id, group, option, sensitive\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_83577459","line":69,"in_reply_to":"ba7be1f8_b314dfe9","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":84,"context_line":"            if group:"},{"line_number":85,"context_line":"                query \u003d query.filter_by(group\u003dgroup)"},{"line_number":86,"context_line":"                if option:"},{"line_number":87,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":88,"context_line":"            return [ref.to_dict() for ref in query.all()]"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_13ae8b81","line":86,"updated":"2015-03-03 01:43:25.000000000","message":"the docstring for this method should say that if group is falsy then option is ignored.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":84,"context_line":"            if group:"},{"line_number":85,"context_line":"                query \u003d query.filter_by(group\u003dgroup)"},{"line_number":86,"context_line":"                if option:"},{"line_number":87,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":88,"context_line":"            return [ref.to_dict() for ref in query.all()]"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_c3b08c8d","line":86,"in_reply_to":"ba7be1f8_13ae8b81","updated":"2015-03-03 14:30:05.000000000","message":"Done (in the abstract method docstring in resource/core.py)","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            if group:"},{"line_number":85,"context_line":"                query \u003d query.filter_by(group\u003dgroup)"},{"line_number":86,"context_line":"                if option:"},{"line_number":87,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":88,"context_line":"            return [ref.to_dict() for ref in query.all()]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def update_config_option(self, domain_id, group, option, value,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_8e46d4be","line":87,"updated":"2015-03-03 01:43:25.000000000","message":"The coverage report shows this isn\u0027t tested. Add a test.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            if group:"},{"line_number":85,"context_line":"                query \u003d query.filter_by(group\u003dgroup)"},{"line_number":86,"context_line":"                if option:"},{"line_number":87,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":88,"context_line":"            return [ref.to_dict() for ref in query.all()]"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def update_config_option(self, domain_id, group, option, value,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_2e4f8f35","line":87,"in_reply_to":"ba7be1f8_8e46d4be","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        with sql.transaction() as session:"},{"line_number":93,"context_line":"            ref \u003d self._get_config_option(session, domain_id, group, option,"},{"line_number":94,"context_line":"                                          sensitive)"},{"line_number":95,"context_line":"            ref.value \u003d value"},{"line_number":96,"context_line":"        return ref.to_dict()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_config_option(self, domain_id, group\u003dNone, option\u003dNone,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_0ef10401","line":95,"updated":"2015-03-03 01:43:25.000000000","message":"this doesn\u0027t raise exception.DomainConfigNotFound as the docstring says. This needs a unit test.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fee379e38c647428ab0b5bc55e91fbb36723147b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        with sql.transaction() as session:"},{"line_number":93,"context_line":"            ref \u003d self._get_config_option(session, domain_id, group, option,"},{"line_number":94,"context_line":"                                          sensitive)"},{"line_number":95,"context_line":"            ref.value \u003d value"},{"line_number":96,"context_line":"        return ref.to_dict()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_config_option(self, domain_id, group\u003dNone, option\u003dNone,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_d9196d89","line":95,"in_reply_to":"ba7be1f8_0ef10401","updated":"2015-03-03 07:14:19.000000000","message":"@brant, i think it does, from the _get_config_option call","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            ref.value \u003d value"},{"line_number":96,"context_line":"        return ref.to_dict()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_config_option(self, domain_id, group\u003dNone, option\u003dNone,"},{"line_number":99,"context_line":"                             sensitive\u003dFalse):"},{"line_number":100,"context_line":"        # NOTE(henry-nash): Since the public API is broken down into calls for"},{"line_number":101,"context_line":"        # delete in both the whitelisted and sensitive methods, we are silent"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_33154f49","line":98,"updated":"2015-03-03 01:43:25.000000000","message":"this actually deletes multiple options, so should change \"_option\" to \"_options\"","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            ref.value \u003d value"},{"line_number":96,"context_line":"        return ref.to_dict()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_config_option(self, domain_id, group\u003dNone, option\u003dNone,"},{"line_number":99,"context_line":"                             sensitive\u003dFalse):"},{"line_number":100,"context_line":"        # NOTE(henry-nash): Since the public API is broken down into calls for"},{"line_number":101,"context_line":"        # delete in both the whitelisted and sensitive methods, we are silent"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ee101750","line":98,"in_reply_to":"ba7be1f8_33154f49","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                             sensitive\u003dFalse):"},{"line_number":100,"context_line":"        # NOTE(henry-nash): Since the public API is broken down into calls for"},{"line_number":101,"context_line":"        # delete in both the whitelisted and sensitive methods, we are silent"},{"line_number":102,"context_line":"        # at the driver level of there was nothing to delete."},{"line_number":103,"context_line":"        with sql.transaction() as session:"},{"line_number":104,"context_line":"            config_table \u003d self.choose_table(sensitive)"},{"line_number":105,"context_line":"            query \u003d session.query(config_table)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_f331f75a","line":102,"updated":"2015-03-03 01:43:25.000000000","message":"change \"of\" to \"if\"\n\nAlso, this could just be the docstring for the method.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                             sensitive\u003dFalse):"},{"line_number":100,"context_line":"        # NOTE(henry-nash): Since the public API is broken down into calls for"},{"line_number":101,"context_line":"        # delete in both the whitelisted and sensitive methods, we are silent"},{"line_number":102,"context_line":"        # at the driver level of there was nothing to delete."},{"line_number":103,"context_line":"        with sql.transaction() as session:"},{"line_number":104,"context_line":"            config_table \u003d self.choose_table(sensitive)"},{"line_number":105,"context_line":"            query \u003d session.query(config_table)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ce13535a","line":102,"in_reply_to":"ba7be1f8_f331f75a","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":107,"context_line":"            if group:"},{"line_number":108,"context_line":"                query \u003d query.filter_by(group\u003dgroup)"},{"line_number":109,"context_line":"                if option:"},{"line_number":110,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":111,"context_line":"            query.delete(False)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_532643cf","line":109,"updated":"2015-03-03 01:43:25.000000000","message":"the docstring for this method should say that if group is falsy then option is ignored.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            query \u003d query.filter_by(domain_id\u003ddomain_id)"},{"line_number":107,"context_line":"            if group:"},{"line_number":108,"context_line":"                query \u003d query.filter_by(group\u003dgroup)"},{"line_number":109,"context_line":"                if option:"},{"line_number":110,"context_line":"                    query \u003d query.filter_by(option\u003doption)"},{"line_number":111,"context_line":"            query.delete(False)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_0355441d","line":109,"in_reply_to":"ba7be1f8_532643cf","updated":"2015-03-03 14:30:05.000000000","message":"Done (in the abstract method docstring in resource/core.py)","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"}],"keystone/resource/core.py":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":797,"context_line":""},{"line_number":798,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":799,"context_line":"class DomainConfigDriver(object):"},{"line_number":800,"context_line":"    \"\"\"Interface description for an Domain Config driver.\"\"\""},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"    @abc.abstractmethod"},{"line_number":803,"context_line":"    def create_config_option(self, domain_id, group, option, value,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_4c878fb5","line":800,"updated":"2015-03-02 21:39:51.000000000","message":"(nit) s/an/a","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":797,"context_line":""},{"line_number":798,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":799,"context_line":"class DomainConfigDriver(object):"},{"line_number":800,"context_line":"    \"\"\"Interface description for an Domain Config driver.\"\"\""},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"    @abc.abstractmethod"},{"line_number":803,"context_line":"    def create_config_option(self, domain_id, group, option, value,"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_5294848a","line":800,"in_reply_to":"ba7be1f8_4c878fb5","updated":"2015-03-02 21:59:50.000000000","message":"Done","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"5285688547822bbff54aaf309bbe0ee2817eee4c","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        :param domain_id: the domain for this option"},{"line_number":808,"context_line":"        :param group: the group option name"},{"line_number":809,"context_line":"        :param option: the option name"},{"line_number":810,"context_line":"        :param value: the value to assign to this option"},{"line_number":811,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        :returns: dict containing group, option and value"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_acb72bd7","line":810,"updated":"2015-03-02 21:14:00.000000000","message":"may want to emphasize that value is JSON string","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        :param domain_id: the domain for this option"},{"line_number":808,"context_line":"        :param group: the group option name"},{"line_number":809,"context_line":"        :param option: the option name"},{"line_number":810,"context_line":"        :param value: the value to assign to this option"},{"line_number":811,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        :returns: dict containing group, option and value"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_f25578c2","line":810,"in_reply_to":"ba7be1f8_acb72bd7","updated":"2015-03-02 21:59:50.000000000","message":"...I don\u0027t think it is....the jsonBlob sql_type decorator will convert it...see the tests in backend.domain_config.core.py","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        :param value: the value to assign to this option"},{"line_number":858,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        :returns: dict containing group, option and value"},{"line_number":861,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_8c00a703","line":860,"updated":"2015-03-02 21:39:51.000000000","message":"Maybe \u0027containing updated group, option and value\u0027.\n\nAdding \"updated\", just to make it clearer.","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":857,"context_line":"        :param value: the value to assign to this option"},{"line_number":858,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        :returns: dict containing group, option and value"},{"line_number":861,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_52700472","line":860,"in_reply_to":"ba7be1f8_8c00a703","updated":"2015-03-02 21:59:50.000000000","message":"Done","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":801,"context_line":""},{"line_number":802,"context_line":"    @abc.abstractmethod"},{"line_number":803,"context_line":"    def create_config_option(self, domain_id, group, option, value,"},{"line_number":804,"context_line":"                             sensitive\u003dFalse):"},{"line_number":805,"context_line":"        \"\"\"Creates a config option for a domain."},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        :param domain_id: the domain for this option"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_4e421c3f","line":804,"updated":"2015-03-03 01:43:25.000000000","message":"shouldn\u0027t sensitive default to True for safety?","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":801,"context_line":""},{"line_number":802,"context_line":"    @abc.abstractmethod"},{"line_number":803,"context_line":"    def create_config_option(self, domain_id, group, option, value,"},{"line_number":804,"context_line":"                             sensitive\u003dFalse):"},{"line_number":805,"context_line":"        \"\"\"Creates a config option for a domain."},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        :param domain_id: the domain for this option"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_0e1d6bbe","line":804,"in_reply_to":"ba7be1f8_4e421c3f","updated":"2015-03-03 14:30:05.000000000","message":"We could do that...but since this API is not exposed publicly (only the manager methods in the follow on patch are exposed), it is False to reflect that usually we are storing whitelisted options.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":805,"context_line":"        \"\"\"Creates a config option for a domain."},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        :param domain_id: the domain for this option"},{"line_number":808,"context_line":"        :param group: the group option name"},{"line_number":809,"context_line":"        :param option: the option name"},{"line_number":810,"context_line":"        :param value: the value to assign to this option"},{"line_number":811,"context_line":"        :param sensitive: whether the option is sensitive"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ae2e388a","line":808,"updated":"2015-03-03 01:43:25.000000000","message":"change \"group option name\" to \"group name\"","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":805,"context_line":"        \"\"\"Creates a config option for a domain."},{"line_number":806,"context_line":""},{"line_number":807,"context_line":"        :param domain_id: the domain for this option"},{"line_number":808,"context_line":"        :param group: the group option name"},{"line_number":809,"context_line":"        :param option: the option name"},{"line_number":810,"context_line":"        :param value: the value to assign to this option"},{"line_number":811,"context_line":"        :param sensitive: whether the option is sensitive"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_2e1a2fc6","line":808,"in_reply_to":"ba7be1f8_ae2e388a","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":826,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":827,"context_line":""},{"line_number":828,"context_line":"        :returns: dict containing group, option and value"},{"line_number":829,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"        \"\"\""},{"line_number":832,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_8e5fb40e","line":829,"updated":"2015-03-03 01:43:25.000000000","message":"this should be\n\n :raises keystone.exception.DomainConfigNotFound: the option doesn\u0027t exist.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":826,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":827,"context_line":""},{"line_number":828,"context_line":"        :returns: dict containing group, option and value"},{"line_number":829,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"        \"\"\""},{"line_number":832,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_4e612338","line":829,"in_reply_to":"ba7be1f8_8e5fb40e","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":834,"context_line":"    @abc.abstractmethod"},{"line_number":835,"context_line":"    def list_config_options(self, domain_id, group\u003dNone, option\u003dFalse,"},{"line_number":836,"context_line":"                            sensitive\u003dFalse):"},{"line_number":837,"context_line":"        \"\"\"Gets a config options for a domain."},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        :param domain_id: the domain for this option"},{"line_number":840,"context_line":"        :param group: optional group option name"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ce836c54","line":837,"updated":"2015-03-03 01:43:25.000000000","message":"change \"a config\" to \"the config\"","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":834,"context_line":"    @abc.abstractmethod"},{"line_number":835,"context_line":"    def list_config_options(self, domain_id, group\u003dNone, option\u003dFalse,"},{"line_number":836,"context_line":"                            sensitive\u003dFalse):"},{"line_number":837,"context_line":"        \"\"\"Gets a config options for a domain."},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        :param domain_id: the domain for this option"},{"line_number":840,"context_line":"        :param group: optional group option name"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ce543356","line":837,"in_reply_to":"ba7be1f8_ce836c54","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        :param domain_id: the domain for this option"},{"line_number":840,"context_line":"        :param group: optional group option name"},{"line_number":841,"context_line":"        :param option: optional option name"},{"line_number":842,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        :returns: list of dicts containing group, option and value"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_4eb05c43","line":841,"updated":"2015-03-03 01:43:25.000000000","message":"the docstring for this method should say that if group is falsy then option is ignored.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        :param domain_id: the domain for this option"},{"line_number":840,"context_line":"        :param group: optional group option name"},{"line_number":841,"context_line":"        :param option: optional option name"},{"line_number":842,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        :returns: list of dicts containing group, option and value"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ee51f762","line":841,"in_reply_to":"ba7be1f8_4eb05c43","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        :returns: dict containing updated group, option and value"},{"line_number":861,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        \"\"\""},{"line_number":864,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ae8ab861","line":861,"updated":"2015-03-03 01:43:25.000000000","message":"this should be\n\n :raises keystone.exception.DomainConfigNotFound: the option doesn\u0027t exist.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":858,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"        :returns: dict containing updated group, option and value"},{"line_number":861,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        \"\"\""},{"line_number":864,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_6ecd0731","line":861,"in_reply_to":"ba7be1f8_ae8ab861","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":866,"context_line":"    @abc.abstractmethod"},{"line_number":867,"context_line":"    def delete_config_option(self, domain_id, group\u003dNone, option\u003dNone,"},{"line_number":868,"context_line":"                             sensitive\u003dFalse):"},{"line_number":869,"context_line":"        \"\"\"Deletes a config option for a domain."},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        Allows deletion of all options for a domain, all options in a group"},{"line_number":872,"context_line":"        or a specific option."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ee64b0ba","line":869,"updated":"2015-03-03 01:43:25.000000000","message":"change \"a config option\" to \"config options\"","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":866,"context_line":"    @abc.abstractmethod"},{"line_number":867,"context_line":"    def delete_config_option(self, domain_id, group\u003dNone, option\u003dNone,"},{"line_number":868,"context_line":"                             sensitive\u003dFalse):"},{"line_number":869,"context_line":"        \"\"\"Deletes a config option for a domain."},{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        Allows deletion of all options for a domain, all options in a group"},{"line_number":872,"context_line":"        or a specific option."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_cedb53eb","line":869,"in_reply_to":"ba7be1f8_ee64b0ba","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        Allows deletion of all options for a domain, all options in a group"},{"line_number":872,"context_line":"        or a specific option."},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        :param domain_id: the domain for this option"},{"line_number":875,"context_line":"        :param group: optional group option name"},{"line_number":876,"context_line":"        :param option: optional option name"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_2e44081a","line":873,"updated":"2015-03-03 01:43:25.000000000","message":"The docstring should say that the driver doesn\u0027t check if there was an option to delete or not.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":870,"context_line":""},{"line_number":871,"context_line":"        Allows deletion of all options for a domain, all options in a group"},{"line_number":872,"context_line":"        or a specific option."},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        :param domain_id: the domain for this option"},{"line_number":875,"context_line":"        :param group: optional group option name"},{"line_number":876,"context_line":"        :param option: optional option name"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_0ee2cb9f","line":873,"in_reply_to":"ba7be1f8_2e44081a","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        :param domain_id: the domain for this option"},{"line_number":875,"context_line":"        :param group: optional group option name"},{"line_number":876,"context_line":"        :param option: optional option name"},{"line_number":877,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_6e49a030","line":876,"updated":"2015-03-03 01:43:25.000000000","message":"the docstring for this method should say that if group is falsy then option is ignored.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        :param domain_id: the domain for this option"},{"line_number":875,"context_line":"        :param group: optional group option name"},{"line_number":876,"context_line":"        :param option: optional option name"},{"line_number":877,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":878,"context_line":""},{"line_number":879,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_8e9cfb0f","line":876,"in_reply_to":"ba7be1f8_6e49a030","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"86d462c3298553aceeac5181e51146a874eccc53","unresolved":false,"context_lines":[{"line_number":815,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        :returns: dict containing group, option and value"},{"line_number":818,"context_line":"        :raises: keystone.exception.Conflict"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        \"\"\""},{"line_number":821,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_6327cbb6","line":818,"updated":"2015-03-03 19:07:27.000000000","message":"this should be\n\n :raises keystone.exception.Conflict: the option already exists.","commit_id":"508b11a5b852e04d753b699338934602419dce7c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d1d8797f1cca8a23e960ba2c4ae81862d2d888ae","unresolved":false,"context_lines":[{"line_number":815,"context_line":"        :param sensitive: whether the option is sensitive"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        :returns: dict containing group, option and value"},{"line_number":818,"context_line":"        :raises: keystone.exception.Conflict"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        \"\"\""},{"line_number":821,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_c3f5d7ed","line":818,"in_reply_to":"ba7be1f8_6327cbb6","updated":"2015-03-03 19:15:39.000000000","message":"I will raise an explicit defect for this as a follow up","commit_id":"508b11a5b852e04d753b699338934602419dce7c"}],"keystone/tests/unit/backend/domain_config/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_e71d0375","line":1,"updated":"2015-02-22 07:59:28.000000000","message":"either list the company you work for or none, or if it\u0027s similar enough keep the current header","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_822fd5a0","line":1,"in_reply_to":"ba7be1f8_e71d0375","updated":"2015-02-22 10:46:39.000000000","message":"Done","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            config1[\u0027value\u0027])"},{"line_number":153,"context_line":"        self.domain_config_api.create_config_option("},{"line_number":154,"context_line":"            domain[\u0027id\u0027], config2[\u0027group\u0027], config2[\u0027option\u0027],"},{"line_number":155,"context_line":"            config2[\u0027value\u0027], sensitive\u003dTrue)"},{"line_number":156,"context_line":"        res \u003d self.domain_config_api.list_config_options("},{"line_number":157,"context_line":"            domain[\u0027id\u0027])"},{"line_number":158,"context_line":"        self.assertThat(res, matchers.HasLength(1))"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_a7d4a420","line":155,"updated":"2015-03-02 21:39:51.000000000","message":"It would make more sense to have config1 as sensitive, as it is the password.","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            config1[\u0027value\u0027])"},{"line_number":153,"context_line":"        self.domain_config_api.create_config_option("},{"line_number":154,"context_line":"            domain[\u0027id\u0027], config2[\u0027group\u0027], config2[\u0027option\u0027],"},{"line_number":155,"context_line":"            config2[\u0027value\u0027], sensitive\u003dTrue)"},{"line_number":156,"context_line":"        res \u003d self.domain_config_api.list_config_options("},{"line_number":157,"context_line":"            domain[\u0027id\u0027])"},{"line_number":158,"context_line":"        self.assertThat(res, matchers.HasLength(1))"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_b2006002","line":155,"in_reply_to":"ba7be1f8_a7d4a420","updated":"2015-03-02 21:59:50.000000000","message":"technically that\u0027s true, but at this level of testing it doesn\u0027t know or care which attribute goes where...the next patch adds that at the manager level","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_2e5b28f7","line":1,"updated":"2015-03-03 01:43:25.000000000","message":"it\u0027s not 2012.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_9b72787a","line":1,"in_reply_to":"ba7be1f8_2e5b28f7","updated":"2015-03-03 14:30:05.000000000","message":"really?  damn, what happened....","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        del self.domain"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _domain_config_crud(self, sensitive):"},{"line_number":38,"context_line":"        group \u003d \u0027ldap\u0027"},{"line_number":39,"context_line":"        option \u003d \u0027password\u0027"},{"line_number":40,"context_line":"        value \u003d uuid.uuid4().hex"},{"line_number":41,"context_line":"        self.domain_config_api.create_config_option("}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_2e296837","line":38,"updated":"2015-03-03 01:43:25.000000000","message":"is there something special about these values? Add a comment why these values are used.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        del self.domain"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _domain_config_crud(self, sensitive):"},{"line_number":38,"context_line":"        group \u003d \u0027ldap\u0027"},{"line_number":39,"context_line":"        option \u003d \u0027password\u0027"},{"line_number":40,"context_line":"        value \u003d uuid.uuid4().hex"},{"line_number":41,"context_line":"        self.domain_config_api.create_config_option("}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_db5150da","line":38,"in_reply_to":"ba7be1f8_2e296837","updated":"2015-03-03 14:30:05.000000000","message":"at this low level there isn\u0027t (at the manager level in the follow on patch there is..)...I was thinking I should make these just random so people don\u0027t draw conclusions at the driver level - I\u0027ll upload a new version that does that","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self._domain_config_crud(sensitive\u003dTrue)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _list_domain_config(self, sensitive):"},{"line_number":72,"context_line":"        \"\"\"Test you can list by domain and domain+group.\"\"\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        config1 \u003d {\u0027group\u0027: \u0027ldap\u0027, \u0027option\u0027: \u0027password\u0027,"},{"line_number":75,"context_line":"                   \u0027value\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_ceb7ecd6","line":72,"updated":"2015-03-03 01:43:25.000000000","message":"and domain+group+option?","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self._domain_config_crud(sensitive\u003dTrue)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _list_domain_config(self, sensitive):"},{"line_number":72,"context_line":"        \"\"\"Test you can list by domain and domain+group.\"\"\""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        config1 \u003d {\u0027group\u0027: \u0027ldap\u0027, \u0027option\u0027: \u0027password\u0027,"},{"line_number":75,"context_line":"                   \u0027value\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_2e522f35","line":72,"in_reply_to":"ba7be1f8_ceb7ecd6","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self._list_domain_config(True)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _delete_domain_configs(self, sensitive):"},{"line_number":106,"context_line":"        \"\"\"Test you can delete by domain and domain+group.\"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        config1 \u003d {\u0027group\u0027: \u0027ldap\u0027, \u0027option\u0027: \u0027password\u0027,"},{"line_number":109,"context_line":"                   \u0027value\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_cede0c11","line":106,"updated":"2015-03-03 01:43:25.000000000","message":"and domain+group+option?","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self._list_domain_config(True)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def _delete_domain_configs(self, sensitive):"},{"line_number":106,"context_line":"        \"\"\"Test you can delete by domain and domain+group.\"\"\""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        config1 \u003d {\u0027group\u0027: \u0027ldap\u0027, \u0027option\u0027: \u0027password\u0027,"},{"line_number":109,"context_line":"                   \u0027value\u0027: uuid.uuid4().hex}"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_89a8758d","line":106,"in_reply_to":"ba7be1f8_cede0c11","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        self.assertThat(res, matchers.HasLength(0))"},{"line_number":172,"context_line":"        res \u003d self.domain_config_api.list_config_options("},{"line_number":173,"context_line":"            domain[\u0027id\u0027], sensitive\u003dTrue)"},{"line_number":174,"context_line":"        self.assertThat(res, matchers.HasLength(0))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_4e969c4d","line":174,"updated":"2015-03-03 01:43:25.000000000","message":"There should be a test for trying to create a config option that already exists.\n\nThere should be a test for trying to update a config option that doesn\u0027t exist.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        self.assertThat(res, matchers.HasLength(0))"},{"line_number":172,"context_line":"        res \u003d self.domain_config_api.list_config_options("},{"line_number":173,"context_line":"            domain[\u0027id\u0027], sensitive\u003dTrue)"},{"line_number":174,"context_line":"        self.assertThat(res, matchers.HasLength(0))"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_e98651b8","line":174,"in_reply_to":"ba7be1f8_4e969c4d","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"}],"keystone/tests/unit/backend/domain_config/test_sql.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"18c4e128b8673014bd226a92dd715b1b776fda5b","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class SqlDomainConfig(core_sql.BaseBackendSqlTests, core.DomainConfigTests):"},{"line_number":35,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_02584531","line":35,"updated":"2015-02-22 07:59:28.000000000","message":"whats the point of this?","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"0b2bdfd76ad8569c4362488e6713b7d7029dd9fe","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class SqlDomainConfig(core_sql.BaseBackendSqlTests, core.DomainConfigTests):"},{"line_number":35,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_8206f51e","line":35,"in_reply_to":"ba7be1f8_02584531","updated":"2015-02-22 10:46:39.000000000","message":"doesn\u0027t that cause the tests in core,DomainConfigTests to be run.? (the structure of the unit/backend is to put your tests in core and the specific sql/ldap files that cause the tests to run....)","commit_id":"0ed7e4ab60e636bce73c2cc739e446567ab3f5c7"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                (\u0027group\u0027, sql.String, 255),"},{"line_number":24,"context_line":"                (\u0027option\u0027, sql.String, 255),"},{"line_number":25,"context_line":"                (\u0027value\u0027, sql.JsonBlob, None))"},{"line_number":26,"context_line":"        self.assertExpectedSchema(\u0027whitelisted_config\u0027, cols)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_sensitive_model(self):"},{"line_number":29,"context_line":"        cols \u003d ((\u0027domain_id\u0027, sql.String, 64),"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_8799607b","line":26,"updated":"2015-03-02 21:39:51.000000000","message":"Should we assert contraints as well?","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                (\u0027group\u0027, sql.String, 255),"},{"line_number":24,"context_line":"                (\u0027option\u0027, sql.String, 255),"},{"line_number":25,"context_line":"                (\u0027value\u0027, sql.JsonBlob, None))"},{"line_number":26,"context_line":"        self.assertExpectedSchema(\u0027whitelisted_config\u0027, cols)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def test_sensitive_model(self):"},{"line_number":29,"context_line":"        cols \u003d ((\u0027domain_id\u0027, sql.String, 64),"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_b24ea06d","line":26,"in_reply_to":"ba7be1f8_8799607b","updated":"2015-03-02 21:59:50.000000000","message":"which constraints, the PK?...we don\u0027t tend to do that in these tests,,,","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                (\u0027group\u0027, sql.String, 255),"},{"line_number":31,"context_line":"                (\u0027option\u0027, sql.String, 255),"},{"line_number":32,"context_line":"                (\u0027value\u0027, sql.JsonBlob, None))"},{"line_number":33,"context_line":"        self.assertExpectedSchema(\u0027sensitive_config\u0027, cols)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class SqlDomainConfig(core_sql.BaseBackendSqlTests, core.DomainConfigTests):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_e77f7c15","line":33,"updated":"2015-03-02 21:39:51.000000000","message":"Same here, should we assert contraints?","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                (\u0027group\u0027, sql.String, 255),"},{"line_number":31,"context_line":"                (\u0027option\u0027, sql.String, 255),"},{"line_number":32,"context_line":"                (\u0027value\u0027, sql.JsonBlob, None))"},{"line_number":33,"context_line":"        self.assertExpectedSchema(\u0027sensitive_config\u0027, cols)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class SqlDomainConfig(core_sql.BaseBackendSqlTests, core.DomainConfigTests):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_f25498ff","line":33,"in_reply_to":"ba7be1f8_e77f7c15","updated":"2015-03-02 21:59:50.000000000","message":"ditto","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"600065467fe6ad1a57d7066bbca5359cc6aa7be2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(SqlDomainConfig, self).setUp()"},{"line_number":39,"context_line":"        # core.DomainConfigTests is effectively a mixin class, so make sure we"},{"line_number":40,"context_line":"        # call it\u0027s setup"},{"line_number":41,"context_line":"        core.DomainConfigTests.setUp(self)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_277d141d","line":40,"updated":"2015-03-02 21:39:51.000000000","message":"(nit) s/it\u0027s/its","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"33d1e5f89c56443a576b4d46f7fbd0d8cfda0f54","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def setUp(self):"},{"line_number":38,"context_line":"        super(SqlDomainConfig, self).setUp()"},{"line_number":39,"context_line":"        # core.DomainConfigTests is effectively a mixin class, so make sure we"},{"line_number":40,"context_line":"        # call it\u0027s setup"},{"line_number":41,"context_line":"        core.DomainConfigTests.setUp(self)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_32147043","line":40,"in_reply_to":"ba7be1f8_277d141d","updated":"2015-03-02 21:59:50.000000000","message":"Done","commit_id":"6c3792b866223099ee728ac079d04675ad48d443"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"eda0887497d6e5a01fac2d4e858d7b6a933396ab","unresolved":false,"context_lines":[{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"    def test_add_domain_config(self):"},{"line_number":1557,"context_line":"        self.upgrade(64)"},{"line_number":1558,"context_line":"        self.assertTableDoesNotExist(\u0027whitelisted_config\u0027)"},{"line_number":1559,"context_line":"        self.assertTableDoesNotExist(\u0027sensitive_config\u0027)"},{"line_number":1560,"context_line":"        self.upgrade(65)"},{"line_number":1561,"context_line":"        self.assertTableColumns(\u0027whitelisted_config\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_6e24400d","line":1558,"updated":"2015-03-03 01:43:25.000000000","message":"using a variable for the name of the tables would be safer.","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"aa53083ef410c57ab05456d4ab0c1e71c9ea7408","unresolved":false,"context_lines":[{"line_number":1555,"context_line":""},{"line_number":1556,"context_line":"    def test_add_domain_config(self):"},{"line_number":1557,"context_line":"        self.upgrade(64)"},{"line_number":1558,"context_line":"        self.assertTableDoesNotExist(\u0027whitelisted_config\u0027)"},{"line_number":1559,"context_line":"        self.assertTableDoesNotExist(\u0027sensitive_config\u0027)"},{"line_number":1560,"context_line":"        self.upgrade(65)"},{"line_number":1561,"context_line":"        self.assertTableColumns(\u0027whitelisted_config\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_3b37cc00","line":1558,"in_reply_to":"ba7be1f8_6e24400d","updated":"2015-03-03 14:30:05.000000000","message":"Done","commit_id":"66fde88103af598cdaf39b8d26a50e561165cd26"}]}
