)]}'
{"keystone/conf/saml.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8e8e0f0689607b3b2c9ba5df0ec99223d1713fa6","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    default\u003dconstants._CERTFILE,"},{"line_number":41,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":42,"context_line":"Absolute path to the certfile to use for SAML signing. For non-production"},{"line_number":43,"context_line":"environments, you may be interested in using `keystone-manage pki_setup` to"},{"line_number":44,"context_line":"generate self-signed certificates. The value cannot contain a comma (`,`)."},{"line_number":45,"context_line":"\"\"\"))"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_878579d0","line":43,"range":{"start_line":43,"start_character":46,"end_line":43,"end_character":71},"updated":"2016-07-11 20:43:31.000000000","message":"hmm, but this is deprecated now, womp womp","commit_id":"b1df34fac0f8c388b665f585e0ac361d8ca9ea06"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"37f83c6601de0ab88928805834be1fe12ba16bf8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":42,"context_line":"Absolute path to the certfile to use for SAML signing. For non-production"},{"line_number":43,"context_line":"environments, you may be interested in using `keystone-manage pki_setup` to"},{"line_number":44,"context_line":"generate self-signed certificates. The value cannot contain a comma (`,`)."},{"line_number":45,"context_line":"\"\"\"))"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"keyfile \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_87d3b9d4","line":44,"range":{"start_line":44,"start_character":35,"end_line":44,"end_character":73},"updated":"2016-07-11 20:45:18.000000000","message":"It may be better to move this before the sentence about non-production usage. It is slight unclear as to what \"value\" is referring to when this is the last sentence.","commit_id":"b1df34fac0f8c388b665f585e0ac361d8ca9ea06"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"615a901b229f53bf1494331cca08b649f3016fe7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":42,"context_line":"Absolute path to the certfile to use for SAML signing. For non-production"},{"line_number":43,"context_line":"environments, you may be interested in using `keystone-manage pki_setup` to"},{"line_number":44,"context_line":"generate self-signed certificates. The value cannot contain a comma (`,`)."},{"line_number":45,"context_line":"\"\"\"))"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"keyfile \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_e726fdcc","line":44,"in_reply_to":"1aa78d24_87d3b9d4","updated":"2016-07-11 20:50:05.000000000","message":"++ i\u0027m just going to cut the bit advertising pki_setup","commit_id":"b1df34fac0f8c388b665f585e0ac361d8ca9ea06"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"37f83c6601de0ab88928805834be1fe12ba16bf8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":51,"context_line":"Absolute path to the keyfile to use for SAML signing. For non-production"},{"line_number":52,"context_line":"environments, you may be interested in using `keystone-manage pki_setup` to"},{"line_number":53,"context_line":"generate self-signed certificates. The value cannot contain"},{"line_number":54,"context_line":"a comma (`,`)."},{"line_number":55,"context_line":"\"\"\"))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"idp_entity_id \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_e7dc3de6","line":54,"range":{"start_line":53,"start_character":35,"end_line":54,"end_character":14},"updated":"2016-07-11 20:45:18.000000000","message":"ditto","commit_id":"b1df34fac0f8c388b665f585e0ac361d8ca9ea06"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8e8e0f0689607b3b2c9ba5df0ec99223d1713fa6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"Absolute path to the keyfile to use for SAML signing. For non-production"},{"line_number":52,"context_line":"environments, you may be interested in using `keystone-manage pki_setup` to"},{"line_number":53,"context_line":"generate self-signed certificates. The value cannot contain"},{"line_number":54,"context_line":"a comma (`,`)."},{"line_number":55,"context_line":"\"\"\"))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"idp_entity_id \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_274c85c7","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":14},"updated":"2016-07-11 20:43:31.000000000","message":"this can go on line 53","commit_id":"b1df34fac0f8c388b665f585e0ac361d8ca9ea06"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7e46b737db01c4c17118b992cc2f049af4f786f3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    \u0027certfile\u0027,"},{"line_number":40,"context_line":"    default\u003dconstants._CERTFILE,"},{"line_number":41,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":42,"context_line":"Absolute path to the certfile to use for SAML signing. The value cannot contain"},{"line_number":43,"context_line":"a comma (`,`)."},{"line_number":44,"context_line":"\"\"\"))"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_93b104e3","line":42,"range":{"start_line":42,"start_character":21,"end_line":42,"end_character":29},"updated":"2016-07-12 17:35:35.000000000","message":"s/certfile/certificate file","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7e46b737db01c4c17118b992cc2f049af4f786f3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \u0027keyfile\u0027,"},{"line_number":48,"context_line":"    default\u003dconstants._KEYFILE,"},{"line_number":49,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":50,"context_line":"Absolute path to the keyfile to use for SAML signing. The value cannot contain"},{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_b3e520dd","line":50,"range":{"start_line":50,"start_character":21,"end_line":50,"end_character":28},"updated":"2016-07-12 17:35:35.000000000","message":"s/keyfile/private key file","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7e46b737db01c4c17118b992cc2f049af4f786f3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_935bc485","line":54,"range":{"start_line":54,"start_character":20,"end_line":54,"end_character":26},"updated":"2016-07-12 17:35:35.000000000","message":"Why not just use URIOpt since the help states it must be a URI.","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"ba15fe82e45b5953dd0950655ea2f7c84e6b40aa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_f5447573","line":54,"in_reply_to":"1aa78d24_153f8187","updated":"2016-07-13 15:42:59.000000000","message":"Max length is needed for this option, but what about the others below?","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"ba15fe82e45b5953dd0950655ea2f7c84e6b40aa","unresolved":false,"context_lines":[{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_f59f55ff","line":54,"in_reply_to":"1aa78d24_34ac4d9e","updated":"2016-07-13 15:42:59.000000000","message":"Good catch. Here\u0027s a fix for that now:\n\nhttps://review.openstack.org/#/c/341625/1","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"87768ff5017d91ba68d5de0635227ffbaad9d0ed","unresolved":false,"context_lines":[{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_153f8187","line":54,"in_reply_to":"1aa78d24_34ac4d9e","updated":"2016-07-13 15:35:45.000000000","message":"Yeah - I didn\u0027t see it anywhere in the docs, I had to go dig out the code.\n\nhttps://github.com/openstack/oslo.config/blob/d4b7650ee0a6f51b37ee55d887729602573225ad/oslo_config/cfg.py#L1279\n\nURIOpt also won\u0027t support max_length (at least it didn\u0027t when I tried it locally).","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b2f41ecb6dd6c9d707399fb6437fd45b8b6130e0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_eb420467","line":54,"in_reply_to":"1aa78d24_935bc485","updated":"2016-07-12 22:27:29.000000000","message":"We do use other attributes that URIOpt might not support (max_length)","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b5bf061e2bf8a71ad8bc13ac70e3a442583eb7c4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"a comma (`,`)."},{"line_number":52,"context_line":"\"\"\"))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_34ac4d9e","line":54,"in_reply_to":"1aa78d24_eb420467","updated":"2016-07-13 12:34:21.000000000","message":"Maybe if there was something called URIOpt in the documentation?\n\n  http://docs.openstack.org/developer/oslo.config/cfg.html#option-types","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7e46b737db01c4c17118b992cc2f049af4f786f3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"`https://keystone.example.com/v3/OS-FEDERATION/saml2/idp`."},{"line_number":62,"context_line":"\"\"\"))"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"idp_sso_endpoint \u003d cfg.StrOpt("},{"line_number":65,"context_line":"    \u0027idp_sso_endpoint\u0027,"},{"line_number":66,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":67,"context_line":"This is the single sign-on (SSO) service location of the identity provider"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_73c9f825","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":29},"updated":"2016-07-12 17:35:35.000000000","message":"URIOpt","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7e46b737db01c4c17118b992cc2f049af4f786f3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"This is the name of the identity provider\u0027s organization to be displayed."},{"line_number":92,"context_line":"\"\"\"))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"idp_organization_url \u003d cfg.StrOpt("},{"line_number":95,"context_line":"    \u0027idp_organization_url\u0027,"},{"line_number":96,"context_line":"    default\u003d\u0027https://example.com/\u0027,"},{"line_number":97,"context_line":"    help\u003dutils.fmt(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_b3e6c0ad","line":94,"range":{"start_line":94,"start_character":27,"end_line":94,"end_character":33},"updated":"2016-07-12 17:35:35.000000000","message":"URIOpt","commit_id":"b91003d875362568bdbb010ab213efa70855b7a8"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ef38b29b17a3e01db8adc25481ca44d7590e4162","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    default\u003dconstants._CERTFILE,"},{"line_number":41,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":42,"context_line":"Absolute path to the certificate file to use for SAML signing. The value cannot"},{"line_number":43,"context_line":"contain a comma (`,`)."},{"line_number":44,"context_line":"\"\"\"))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"keyfile \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_c5e55538","line":43,"updated":"2016-07-13 13:16:00.000000000","message":"Why can\u0027t it contain a comma?","commit_id":"cde2dc1daa16763839354d8e2a118b3f0df68a18"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"47433e6e84a71f7beff11adca39d3705b10bba6a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    default\u003dconstants._CERTFILE,"},{"line_number":41,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":42,"context_line":"Absolute path to the certificate file to use for SAML signing. The value cannot"},{"line_number":43,"context_line":"contain a comma (`,`)."},{"line_number":44,"context_line":"\"\"\"))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"keyfile \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2c0d21e8","line":43,"in_reply_to":"1aa78d24_c5e55538","updated":"2016-07-13 13:37:00.000000000","message":"The best way to answer is with a follow up patch: https://review.openstack.org/#/c/341525/","commit_id":"cde2dc1daa16763839354d8e2a118b3f0df68a18"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"ef38b29b17a3e01db8adc25481ca44d7590e4162","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":58,"context_line":"This is the unique entity identifier of the identity provider (keystone) to use"},{"line_number":59,"context_line":"when generating SAML assertions. This value is required to generate identity"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_c5bc3508","line":56,"updated":"2016-07-13 13:16:00.000000000","message":"Is this just arbitrary?","commit_id":"cde2dc1daa16763839354d8e2a118b3f0df68a18"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"47433e6e84a71f7beff11adca39d3705b10bba6a","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"idp_entity_id \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \u0027idp_entity_id\u0027,"},{"line_number":56,"context_line":"    max_length\u003d1024,"},{"line_number":57,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":58,"context_line":"This is the unique entity identifier of the identity provider (keystone) to use"},{"line_number":59,"context_line":"when generating SAML assertions. This value is required to generate identity"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_cc09fdde","line":56,"in_reply_to":"1aa78d24_c5bc3508","updated":"2016-07-13 13:37:00.000000000","message":"Maybe :) The SAML v2.0 spec dictates that limitation itself.","commit_id":"cde2dc1daa16763839354d8e2a118b3f0df68a18"}]}
