)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"a76529a5d17d24888521e4f0767d01b75b0c1af5","unresolved":false,"context_lines":[{"line_number":15,"context_line":"config file at /etc/castellan/castellan-functional.conf. A sample config"},{"line_number":16,"context_line":"can be generated using:"},{"line_number":17,"context_line":"    tox -e genconfig"},{"line_number":18,"context_line":"The generated sample config can be found at castellan/etc/castellan/castellan-functional.conf"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint add-barbican-key-manager"},{"line_number":21,"context_line":"Change-Id: Ideb9b1f01e51d85ff56575d8ab6ac970053a9604"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a50d1a3_3fc3caee","line":18,"updated":"2015-07-22 19:46:44.000000000","message":"...found at etc/castellan/castellan-functional.conf","commit_id":"6cc6ff354c3d25d3b692b26f0b4ca68a07766d36"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"7beed48c2e26ea294abdef22bcc284205fa48282","unresolved":false,"context_lines":[{"line_number":15,"context_line":"config file at /etc/castellan/castellan-functional.conf. A sample config"},{"line_number":16,"context_line":"can be generated using:"},{"line_number":17,"context_line":"    tox -e genconfig"},{"line_number":18,"context_line":"The generated sample config can be found at castellan/etc/castellan/castellan-functional.conf"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint add-barbican-key-manager"},{"line_number":21,"context_line":"Change-Id: Ideb9b1f01e51d85ff56575d8ab6ac970053a9604"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a50d1a3_42383def","line":18,"in_reply_to":"3a50d1a3_3fc3caee","updated":"2015-07-22 20:59:28.000000000","message":"Done","commit_id":"6cc6ff354c3d25d3b692b26f0b4ca68a07766d36"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"bab4002dd7068b43a0447e66264f06235253e96c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"config file at /etc/castellan/castellan-functional.conf. A sample config"},{"line_number":16,"context_line":"can be generated using:"},{"line_number":17,"context_line":"    tox -e genconfig"},{"line_number":18,"context_line":"The generated sample config can be found at castellan/etc/castellan/castellan-functional.conf"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint add-barbican-key-manager"},{"line_number":21,"context_line":"Change-Id: Ideb9b1f01e51d85ff56575d8ab6ac970053a9604"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_2a5dc346","line":18,"updated":"2015-07-22 22:41:00.000000000","message":"...found at etc/castellan/castellan-functional.conf","commit_id":"9a466120fb0552f8395daf353bebd13b38ab76d4"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"f76a4449bbe5a54e1c76e5b4592532f03ec392c4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"config file at /etc/castellan/castellan-functional.conf. A sample config"},{"line_number":16,"context_line":"can be generated using:"},{"line_number":17,"context_line":"    tox -e genconfig"},{"line_number":18,"context_line":"The generated sample config can be found at castellan/etc/castellan/castellan-functional.conf"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: blueprint add-barbican-key-manager"},{"line_number":21,"context_line":"Change-Id: Ideb9b1f01e51d85ff56575d8ab6ac970053a9604"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_3905f40f","line":18,"in_reply_to":"3a50d1a3_2a5dc346","updated":"2015-07-23 14:27:52.000000000","message":"Oh, no!  I thought I changed this.","commit_id":"9a466120fb0552f8395daf353bebd13b38ab76d4"}],"castellan/tests/functional/config.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"4e9f5b2704b6656e71a0b10a0761ffbaf9463e16","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    TEST_CONF \u003d cfg.ConfigOpts()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027)"},{"line_number":28,"context_line":"    identity_options \u003d ["},{"line_number":29,"context_line":"        cfg.StrOpt(\u0027uri\u0027, default\u003d\u0027http://localhost:5000/v3\u0027),"},{"line_number":30,"context_line":"        cfg.StrOpt(\u0027version\u0027, default\u003d\u0027v3\u0027),"},{"line_number":31,"context_line":"        cfg.StrOpt(\u0027username\u0027, default\u003d\u0027admin\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_02f9274d","line":28,"updated":"2015-07-21 14:31:37.000000000","message":"Why are the defaults repeated here and in castellan-functional.conf?","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"e0c13400ec255a0e116be36dd43fc91c455777a5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    TEST_CONF \u003d cfg.ConfigOpts()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027)"},{"line_number":28,"context_line":"    identity_options \u003d ["},{"line_number":29,"context_line":"        cfg.StrOpt(\u0027uri\u0027, default\u003d\u0027http://localhost:5000/v3\u0027),"},{"line_number":30,"context_line":"        cfg.StrOpt(\u0027version\u0027, default\u003d\u0027v3\u0027),"},{"line_number":31,"context_line":"        cfg.StrOpt(\u0027username\u0027, default\u003d\u0027admin\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c9e6b814","line":28,"in_reply_to":"3a50d1a3_02f9274d","updated":"2015-07-22 18:47:38.000000000","message":"Done","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"4e9f5b2704b6656e71a0b10a0761ffbaf9463e16","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        cfg.StrOpt(\u0027password\u0027, default\u003d\u0027secretadmin\u0027),"},{"line_number":33,"context_line":"        cfg.StrOpt(\u0027project_name\u0027, default\u003d\u0027admin\u0027),"},{"line_number":34,"context_line":"        cfg.StrOpt(\u0027domain_name\u0027, default\u003d\u0027Default\u0027),"},{"line_number":35,"context_line":"        cfg.StrOpt(\u0027region\u0027, default\u003d\u0027RegionOne\u0027)]"},{"line_number":36,"context_line":"    TEST_CONF.register_group(identity_group)"},{"line_number":37,"context_line":"    TEST_CONF.register_opts(identity_options, group\u003didentity_group)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_42864fba","line":35,"updated":"2015-07-21 14:31:37.000000000","message":"Note: region is not specified in castellan-functional.conf","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"e0c13400ec255a0e116be36dd43fc91c455777a5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        cfg.StrOpt(\u0027password\u0027, default\u003d\u0027secretadmin\u0027),"},{"line_number":33,"context_line":"        cfg.StrOpt(\u0027project_name\u0027, default\u003d\u0027admin\u0027),"},{"line_number":34,"context_line":"        cfg.StrOpt(\u0027domain_name\u0027, default\u003d\u0027Default\u0027),"},{"line_number":35,"context_line":"        cfg.StrOpt(\u0027region\u0027, default\u003d\u0027RegionOne\u0027)]"},{"line_number":36,"context_line":"    TEST_CONF.register_group(identity_group)"},{"line_number":37,"context_line":"    TEST_CONF.register_opts(identity_options, group\u003didentity_group)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_29bcfcda","line":35,"in_reply_to":"3a50d1a3_42864fba","updated":"2015-07-22 18:47:38.000000000","message":"Done","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"}],"castellan/tests/functional/key_manager/test_barbican_key_manager.py":[{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"0c34bb7f79ab6e7ff8818114483243e98f18f301","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    def test_delete_null_context(self):"},{"line_number":79,"context_line":"        key_uuid \u003d self.key_mgr.create_key(self.ctxt,"},{"line_number":80,"context_line":"                                           algorithm\u003d\u0027AES\u0027,"},{"line_number":81,"context_line":"                                           length\u003d256)"},{"line_number":82,"context_line":"        self.assertRaises(exception.Forbidden,"},{"line_number":83,"context_line":"                          self.key_mgr.delete_key, None, key_uuid)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_5776673f","line":81,"updated":"2015-07-11 22:31:39.000000000","message":"Do you need addCleanup(...) call here?","commit_id":"d40bce0e40072ef8c3c9318933c7fb8f7de676fd"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"0c34bb7f79ab6e7ff8818114483243e98f18f301","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.assertRaises(exception.Forbidden,"},{"line_number":83,"context_line":"                          self.key_mgr.delete_key, None, key_uuid)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_delete_unknown_key(self):"},{"line_number":86,"context_line":"        self.assertRaises(exception.KeyManagerError,"},{"line_number":87,"context_line":"                          self.key_mgr.delete_key, self.ctxt, None)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_37940336","line":85,"updated":"2015-07-11 22:31:39.000000000","message":"I think this test is different than delete unknown key. I like this test, but I think it would be good to have another test to delete with a valid key formatted ID. Maybe create a key and then change first byte of UUID or something. Or just use a string for UUID of something like \"foo.\"","commit_id":"d40bce0e40072ef8c3c9318933c7fb8f7de676fd"},{"author":{"_account_id":6783,"name":"Nathan Reller","email":"nathan.s.reller@gmail.com","username":"rellerreller"},"change_message_id":"0c34bb7f79ab6e7ff8818114483243e98f18f301","unresolved":false,"context_lines":[{"line_number":109,"context_line":"                                           length\u003d256)"},{"line_number":110,"context_line":"        self.addCleanup(self.key_mgr.delete_key, self.ctxt, key_uuid)"},{"line_number":111,"context_line":"        self.assertRaises(exception.KeyManagerError,"},{"line_number":112,"context_line":"                          self.key_mgr.get_key, self.ctxt, None)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def test_store(self):"},{"line_number":115,"context_line":"        secret_key \u003d b\u0027\\x01\\x02\\xA0\\xB3\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a41bdd9_f79d3b5a","line":112,"updated":"2015-07-11 22:31:39.000000000","message":"Same comment as for delete unknown key.","commit_id":"d40bce0e40072ef8c3c9318933c7fb8f7de676fd"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"4e9f5b2704b6656e71a0b10a0761ffbaf9463e16","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.key_mgr.delete_key(self.ctxt, key_uuid)"},{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            self.key_mgr.get_key(self.ctxt, key_uuid)"},{"line_number":74,"context_line":"            self.assertFail()"},{"line_number":75,"context_line":"        except Exception as e:"},{"line_number":76,"context_line":"            self.assertEqual(404, e.status_code)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_62deeb40","line":74,"updated":"2015-07-21 14:31:37.000000000","message":"Better to put in an \"else\" block (https://docs.python.org/2/reference/compound_stmts.html#the-try-statement) I think.\n\nAlso, please include a message regarding why no exception is a failure.","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"e0c13400ec255a0e116be36dd43fc91c455777a5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.key_mgr.delete_key(self.ctxt, key_uuid)"},{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            self.key_mgr.get_key(self.ctxt, key_uuid)"},{"line_number":74,"context_line":"            self.assertFail()"},{"line_number":75,"context_line":"        except Exception as e:"},{"line_number":76,"context_line":"            self.assertEqual(404, e.status_code)"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_a9d00c20","line":74,"in_reply_to":"3a50d1a3_62deeb40","updated":"2015-07-22 18:47:38.000000000","message":"Done","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"4e9f5b2704b6656e71a0b10a0761ffbaf9463e16","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            self.key_mgr.get_key(self.ctxt, key_uuid)"},{"line_number":74,"context_line":"            self.assertFail()"},{"line_number":75,"context_line":"        except Exception as e:"},{"line_number":76,"context_line":"            self.assertEqual(404, e.status_code)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_delete_null_context(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_22746366","line":75,"updated":"2015-07-21 14:31:37.000000000","message":"Please use most specific exception(s) possible.","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"e0c13400ec255a0e116be36dd43fc91c455777a5","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        try:"},{"line_number":73,"context_line":"            self.key_mgr.get_key(self.ctxt, key_uuid)"},{"line_number":74,"context_line":"            self.assertFail()"},{"line_number":75,"context_line":"        except Exception as e:"},{"line_number":76,"context_line":"            self.assertEqual(404, e.status_code)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_delete_null_context(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_c9cd5886","line":75,"in_reply_to":"3a50d1a3_22746366","updated":"2015-07-22 18:47:38.000000000","message":"Done","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"4e9f5b2704b6656e71a0b10a0761ffbaf9463e16","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self.assertRaises(exception.KeyManagerError,"},{"line_number":118,"context_line":"                          self.key_mgr.get_key, self.ctxt, None)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_get_unkown_key(self):"},{"line_number":121,"context_line":"        key_uuid \u003d self.key_mgr.create_key(self.ctxt,"},{"line_number":122,"context_line":"                                           algorithm\u003d\u0027AES\u0027,"},{"line_number":123,"context_line":"                                           length\u003d256)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_627d8b6d","line":120,"updated":"2015-07-21 14:31:37.000000000","message":"nit: unkown -\u003e unknown","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"e0c13400ec255a0e116be36dd43fc91c455777a5","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        self.assertRaises(exception.KeyManagerError,"},{"line_number":118,"context_line":"                          self.key_mgr.get_key, self.ctxt, None)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def test_get_unkown_key(self):"},{"line_number":121,"context_line":"        key_uuid \u003d self.key_mgr.create_key(self.ctxt,"},{"line_number":122,"context_line":"                                           algorithm\u003d\u0027AES\u0027,"},{"line_number":123,"context_line":"                                           length\u003d256)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_69c68469","line":120,"in_reply_to":"3a50d1a3_627d8b6d","updated":"2015-07-22 18:47:38.000000000","message":"Done","commit_id":"2d91572f8539d546a158338f58d97f9877d6a1e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"a76529a5d17d24888521e4f0767d01b75b0c1af5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        except barbican_exceptions.HTTPClientError as e:"},{"line_number":76,"context_line":"            self.assertEqual(404, e.status_code)"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            self.assertFaile()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_delete_null_context(self):"},{"line_number":81,"context_line":"        key_uuid \u003d self.key_mgr.create_key(self.ctxt,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_bf24bac4","line":78,"updated":"2015-07-22 19:46:44.000000000","message":"I think there\u0027s a typo on this line: \u0027e\u0027 in assertFaile\n\nAlso, please include an error message -- e.g., \"No exception when deleting non-existence key\".","commit_id":"6cc6ff354c3d25d3b692b26f0b4ca68a07766d36"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"7beed48c2e26ea294abdef22bcc284205fa48282","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        except barbican_exceptions.HTTPClientError as e:"},{"line_number":76,"context_line":"            self.assertEqual(404, e.status_code)"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            self.assertFaile()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_delete_null_context(self):"},{"line_number":81,"context_line":"        key_uuid \u003d self.key_mgr.create_key(self.ctxt,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_38d7604c","line":78,"in_reply_to":"3a50d1a3_bf24bac4","updated":"2015-07-22 20:59:28.000000000","message":"Nice catch!","commit_id":"6cc6ff354c3d25d3b692b26f0b4ca68a07766d36"}],"tox.ini":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"a76529a5d17d24888521e4f0767d01b75b0c1af5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"[testenv:genconfig]"},{"line_number":39,"context_line":"commands \u003d"},{"line_number":40,"context_line":"    oslo-config-generator --config-file\u003detc/castellan/functional-config-generator.conf"},{"line_number":41,"context_line":"#TODO(kfarr): add config generator for main Castellan options"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[flake8]"},{"line_number":44,"context_line":"# H803 skipped on purpose per list discussion."}],"source_content_type":"text/x-properties","patch_set":8,"id":"3a50d1a3_822f2587","line":41,"updated":"2015-07-22 19:46:44.000000000","message":"Should this be complete prior to change acceptance?","commit_id":"6cc6ff354c3d25d3b692b26f0b4ca68a07766d36"},{"author":{"_account_id":8623,"name":"Kaitlin Farr","email":"kaitlin.farr@jhuapl.edu","username":"kaitlin.farr"},"change_message_id":"7beed48c2e26ea294abdef22bcc284205fa48282","unresolved":false,"context_lines":[{"line_number":38,"context_line":"[testenv:genconfig]"},{"line_number":39,"context_line":"commands \u003d"},{"line_number":40,"context_line":"    oslo-config-generator --config-file\u003detc/castellan/functional-config-generator.conf"},{"line_number":41,"context_line":"#TODO(kfarr): add config generator for main Castellan options"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[flake8]"},{"line_number":44,"context_line":"# H803 skipped on purpose per list discussion."}],"source_content_type":"text/x-properties","patch_set":8,"id":"3a50d1a3_58e58c35","line":41,"in_reply_to":"3a50d1a3_822f2587","updated":"2015-07-22 20:59:28.000000000","message":"I think it\u0027s something that would be good in a separate patch, but this TODO is here as a reminder for anyone who wonders if genconfig should be generating a sample main config file as well.","commit_id":"6cc6ff354c3d25d3b692b26f0b4ca68a07766d36"}]}
