)]}'
{"keystone/resource/core.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":797,"context_line":"    groups_supported \u003d [\u0027identity\u0027, \u0027ldap\u0027]"},{"line_number":798,"context_line":"    whitelisted_options \u003d {"},{"line_number":799,"context_line":"        \u0027identity\u0027: [\u0027driver\u0027],"},{"line_number":800,"context_line":"        \u0027ldap\u0027: ["},{"line_number":801,"context_line":"            \u0027url\u0027, \u0027user\u0027, \u0027suffix\u0027, \u0027use_dumb_member\u0027, \u0027dumb_member\u0027,"},{"line_number":802,"context_line":"            \u0027allow_subtree_delete\u0027, \u0027query_scope\u0027, \u0027page_size\u0027,"},{"line_number":803,"context_line":"            \u0027alias_dereferencing\u0027, \u0027debug_level\u0027, \u0027chase_referrals\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_e4d12858","line":800,"updated":"2015-03-03 07:51:03.000000000","message":"there must be an easier way to do this,\n\nCONF has all the options already, i\u0027d be surprised if there isnt a way to list the options of a group into a list, and pop out \u0027password\u0027\n\nedit: not sure if you want to do it this way, since it access private fields, but heres a list for comparison\n\n(Pdb) p sorted(list(CONF.ldap._group._opts.keys()))\n[\u0027alias_dereferencing\u0027, \u0027allow_subtree_delete\u0027, \u0027auth_pool_connection_lifetime\u0027, \u0027auth_pool_size\u0027, \u0027chase_referrals\u0027, \u0027debug_level\u0027, \u0027dumb_member\u0027, \u0027group_additional_attribute_mapping\u0027, \u0027group_allow_create\u0027, \u0027group_allow_delete\u0027, \u0027group_allow_update\u0027, \u0027group_attribute_ignore\u0027, \u0027group_desc_attribute\u0027, \u0027group_filter\u0027, \u0027group_id_attribute\u0027, \u0027group_member_attribute\u0027, \u0027group_name_attribute\u0027, \u0027group_objectclass\u0027, \u0027group_tree_dn\u0027, \u0027page_size\u0027, \u0027password\u0027, \u0027pool_connection_lifetime\u0027, \u0027pool_connection_timeout\u0027, \u0027pool_retry_delay\u0027, \u0027pool_retry_max\u0027, \u0027pool_size\u0027, \u0027project_additional_attribute_mapping\u0027, \u0027project_allow_create\u0027, \u0027project_allow_delete\u0027, \u0027project_allow_update\u0027, \u0027project_attribute_ignore\u0027, \u0027project_desc_attribute\u0027, \u0027project_domain_id_attribute\u0027, \u0027project_enabled_attribute\u0027, \u0027project_enabled_emulation\u0027, \u0027project_enabled_emulation_dn\u0027, \u0027project_filter\u0027, \u0027project_id_attribute\u0027, \u0027project_member_attribute\u0027, \u0027project_name_attribute\u0027, \u0027project_objectclass\u0027, \u0027project_tree_dn\u0027, \u0027query_scope\u0027, \u0027role_additional_attribute_mapping\u0027, \u0027role_allow_create\u0027, \u0027role_allow_delete\u0027, \u0027role_allow_update\u0027, \u0027role_attribute_ignore\u0027, \u0027role_filter\u0027, \u0027role_id_attribute\u0027, \u0027role_member_attribute\u0027, \u0027role_name_attribute\u0027, \u0027role_objectclass\u0027, \u0027role_tree_dn\u0027, \u0027suffix\u0027, \u0027tls_cacertdir\u0027, \u0027tls_cacertfile\u0027, \u0027tls_req_cert\u0027, \u0027url\u0027, \u0027use_auth_pool\u0027, \u0027use_dumb_member\u0027, \u0027use_pool\u0027, \u0027use_tls\u0027, \u0027user\u0027, \u0027user_additional_attribute_mapping\u0027, \u0027user_allow_create\u0027, \u0027user_allow_delete\u0027, \u0027user_allow_update\u0027, \u0027user_attribute_ignore\u0027, \u0027user_default_project_id_attribute\u0027, \u0027user_enabled_attribute\u0027, \u0027user_enabled_default\u0027, \u0027user_enabled_emulation\u0027, \u0027user_enabled_emulation_dn\u0027, \u0027user_enabled_invert\u0027, \u0027user_enabled_mask\u0027, \u0027user_filter\u0027, \u0027user_id_attribute\u0027, \u0027user_mail_attribute\u0027, \u0027user_name_attribute\u0027, \u0027user_objectclass\u0027, \u0027user_pass_attribute\u0027, \u0027user_tree_dn\u0027]","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":797,"context_line":"    groups_supported \u003d [\u0027identity\u0027, \u0027ldap\u0027]"},{"line_number":798,"context_line":"    whitelisted_options \u003d {"},{"line_number":799,"context_line":"        \u0027identity\u0027: [\u0027driver\u0027],"},{"line_number":800,"context_line":"        \u0027ldap\u0027: ["},{"line_number":801,"context_line":"            \u0027url\u0027, \u0027user\u0027, \u0027suffix\u0027, \u0027use_dumb_member\u0027, \u0027dumb_member\u0027,"},{"line_number":802,"context_line":"            \u0027allow_subtree_delete\u0027, \u0027query_scope\u0027, \u0027page_size\u0027,"},{"line_number":803,"context_line":"            \u0027alias_dereferencing\u0027, \u0027debug_level\u0027, \u0027chase_referrals\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_fea602aa","line":800,"in_reply_to":"ba7be1f8_342c4402","updated":"2015-03-03 15:22:45.000000000","message":"No - the explicit requirement during the discussion at the midsize was that we must (in code) manually enable each option that we are going to allow to be accessed in this way.  Technically, of course we could automate this - but that wasn\u0027t the requirement.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"5ed84f6c3d7b78fad9641e1f3f25b56d363ec9bb","unresolved":false,"context_lines":[{"line_number":797,"context_line":"    groups_supported \u003d [\u0027identity\u0027, \u0027ldap\u0027]"},{"line_number":798,"context_line":"    whitelisted_options \u003d {"},{"line_number":799,"context_line":"        \u0027identity\u0027: [\u0027driver\u0027],"},{"line_number":800,"context_line":"        \u0027ldap\u0027: ["},{"line_number":801,"context_line":"            \u0027url\u0027, \u0027user\u0027, \u0027suffix\u0027, \u0027use_dumb_member\u0027, \u0027dumb_member\u0027,"},{"line_number":802,"context_line":"            \u0027allow_subtree_delete\u0027, \u0027query_scope\u0027, \u0027page_size\u0027,"},{"line_number":803,"context_line":"            \u0027alias_dereferencing\u0027, \u0027debug_level\u0027, \u0027chase_referrals\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_342c4402","line":800,"in_reply_to":"ba7be1f8_e4d12858","updated":"2015-03-03 11:23:45.000000000","message":"Yes, I agree we should have an automated way to do this for whitelisted options, which would be [all_options] - \nsentitive_options].\n\nsensitive_options, in turn, would be defined manually.\n\nThis would be easier to maintain, once we add or deprecated options.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            \u0027user_pass_attribute\u0027, \u0027user_enabled_attribute\u0027,"},{"line_number":807,"context_line":"            \u0027user_enabled_invert\u0027, \u0027user_enabled_mask\u0027, \u0027user_enabled_default\u0027,"},{"line_number":808,"context_line":"            \u0027user_attribute_ignore\u0027, \u0027user_default_project_id_attribute\u0027,"},{"line_number":809,"context_line":"            \u0027user_allow_create\u0027, \u0027user_allow_update\u0027, \u0027user_allow_delete\u0027,"},{"line_number":810,"context_line":"            \u0027user_enabled_emulation\u0027, \u0027user_enabled_emulation_dn\u0027,"},{"line_number":811,"context_line":"            \u0027user_additional_attribute_mapping\u0027, \u0027group_tree_dn\u0027,"},{"line_number":812,"context_line":"            \u0027group_filter\u0027, \u0027group_objectclass\u0027, \u0027group_id_attribute\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_a4e2d09d","line":809,"updated":"2015-03-03 07:51:03.000000000","message":"consider sorting this list","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            \u0027user_pass_attribute\u0027, \u0027user_enabled_attribute\u0027,"},{"line_number":807,"context_line":"            \u0027user_enabled_invert\u0027, \u0027user_enabled_mask\u0027, \u0027user_enabled_default\u0027,"},{"line_number":808,"context_line":"            \u0027user_attribute_ignore\u0027, \u0027user_default_project_id_attribute\u0027,"},{"line_number":809,"context_line":"            \u0027user_allow_create\u0027, \u0027user_allow_update\u0027, \u0027user_allow_delete\u0027,"},{"line_number":810,"context_line":"            \u0027user_enabled_emulation\u0027, \u0027user_enabled_emulation_dn\u0027,"},{"line_number":811,"context_line":"            \u0027user_additional_attribute_mapping\u0027, \u0027group_tree_dn\u0027,"},{"line_number":812,"context_line":"            \u0027group_filter\u0027, \u0027group_objectclass\u0027, \u0027group_id_attribute\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_7eb212e6","line":809,"in_reply_to":"ba7be1f8_a4e2d09d","updated":"2015-03-03 15:22:45.000000000","message":"i kept in the order of how they appear in config....","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":817,"context_line":"            \u0027tls_cacertdir\u0027, \u0027use_tls\u0027, \u0027tls_req_cert\u0027, \u0027use_pool\u0027,"},{"line_number":818,"context_line":"            \u0027pool_size\u0027, \u0027pool_retry_max\u0027, \u0027pool_retry_delay\u0027,"},{"line_number":819,"context_line":"            \u0027pool_connection_timeout\u0027, \u0027pool_connection_lifetime\u0027,"},{"line_number":820,"context_line":"            \u0027use_auth_pool\u0027, \u0027auth_pool_size\u0027, \u0027auth_pool_connection_lifetime\u0027"},{"line_number":821,"context_line":"        ]"},{"line_number":822,"context_line":"    }"},{"line_number":823,"context_line":"    sensitive_options \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_6e2360bd","line":820,"updated":"2015-03-03 02:03:18.000000000","message":"what about project_tree_dn, etc?","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":817,"context_line":"            \u0027tls_cacertdir\u0027, \u0027use_tls\u0027, \u0027tls_req_cert\u0027, \u0027use_pool\u0027,"},{"line_number":818,"context_line":"            \u0027pool_size\u0027, \u0027pool_retry_max\u0027, \u0027pool_retry_delay\u0027,"},{"line_number":819,"context_line":"            \u0027pool_connection_timeout\u0027, \u0027pool_connection_lifetime\u0027,"},{"line_number":820,"context_line":"            \u0027use_auth_pool\u0027, \u0027auth_pool_size\u0027, \u0027auth_pool_connection_lifetime\u0027"},{"line_number":821,"context_line":"        ]"},{"line_number":822,"context_line":"    }"},{"line_number":823,"context_line":"    sensitive_options \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_a44bb0af","line":820,"in_reply_to":"ba7be1f8_6e2360bd","updated":"2015-03-03 07:51:03.000000000","message":"also missing the role related options","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":817,"context_line":"            \u0027tls_cacertdir\u0027, \u0027use_tls\u0027, \u0027tls_req_cert\u0027, \u0027use_pool\u0027,"},{"line_number":818,"context_line":"            \u0027pool_size\u0027, \u0027pool_retry_max\u0027, \u0027pool_retry_delay\u0027,"},{"line_number":819,"context_line":"            \u0027pool_connection_timeout\u0027, \u0027pool_connection_lifetime\u0027,"},{"line_number":820,"context_line":"            \u0027use_auth_pool\u0027, \u0027auth_pool_size\u0027, \u0027auth_pool_connection_lifetime\u0027"},{"line_number":821,"context_line":"        ]"},{"line_number":822,"context_line":"    }"},{"line_number":823,"context_line":"    sensitive_options \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_3e0a5a8a","line":820,"in_reply_to":"ba7be1f8_a44bb0af","updated":"2015-03-03 15:22:45.000000000","message":"on purpose.....only those options that can apply to the multi-domain identity support are allowed...project and role are not supported on a domain by domain basis","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        # Something must be defined"},{"line_number":836,"context_line":"        if not config and not group and not option:"},{"line_number":837,"context_line":"            raise exception.InvalidDomainConfig(group\u003dNone, option\u003dNone)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_89488e5d","line":837,"updated":"2015-03-03 02:03:18.000000000","message":"The message for this is just going to be \"Option None in Group None...\", which isn\u0027t very helpful.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        # Something must be defined"},{"line_number":836,"context_line":"        if not config and not group and not option:"},{"line_number":837,"context_line":"            raise exception.InvalidDomainConfig(group\u003dNone, option\u003dNone)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_51a29ffc","line":837,"in_reply_to":"ba7be1f8_84494c33","updated":"2015-03-03 15:22:45.000000000","message":"damn, you spotted that one...fixed.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"        # Something must be defined"},{"line_number":836,"context_line":"        if not config and not group and not option:"},{"line_number":837,"context_line":"            raise exception.InvalidDomainConfig(group\u003dNone, option\u003dNone)"},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":840,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_84494c33","line":837,"in_reply_to":"ba7be1f8_89488e5d","updated":"2015-03-03 07:51:03.000000000","message":"++","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":841,"context_line":"        # If there is a group or option, then there should be only one entry"},{"line_number":842,"context_line":"        # in the config"},{"line_number":843,"context_line":"        if (group or option) and len(config) !\u003d 1:"},{"line_number":844,"context_line":"            raise exception.InvalidDomainConfig(group\u003dgroup, option\u003doption)"},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"        # Make sure the groups/options defined in config itself are valid"},{"line_number":847,"context_line":"        if not option:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_895fae0e","line":844,"updated":"2015-03-03 02:03:18.000000000","message":"The message for this should say that there must be only one entry in the config for the option in the group.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":841,"context_line":"        # If there is a group or option, then there should be only one entry"},{"line_number":842,"context_line":"        # in the config"},{"line_number":843,"context_line":"        if (group or option) and len(config) !\u003d 1:"},{"line_number":844,"context_line":"            raise exception.InvalidDomainConfig(group\u003dgroup, option\u003doption)"},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"        # Make sure the groups/options defined in config itself are valid"},{"line_number":847,"context_line":"        if not option:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_d173ef13","line":844,"in_reply_to":"ba7be1f8_895fae0e","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":849,"context_line":"                if (not config[group_opt] or not"},{"line_number":850,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":851,"context_line":"                    raise exception.InvalidDomainConfig(group\u003dgroup_opt,"},{"line_number":852,"context_line":"                                                        option\u003dNone)"},{"line_number":853,"context_line":"                for option_opt in config[group_opt]:"},{"line_number":854,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":855,"context_line":"                        group_opt, option_opt)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_297fa267","line":852,"updated":"2015-03-03 02:03:18.000000000","message":"this needs to say what was wrong with it.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":849,"context_line":"                if (not config[group_opt] or not"},{"line_number":850,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":851,"context_line":"                    raise exception.InvalidDomainConfig(group\u003dgroup_opt,"},{"line_number":852,"context_line":"                                                        option\u003dNone)"},{"line_number":853,"context_line":"                for option_opt in config[group_opt]:"},{"line_number":854,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":855,"context_line":"                        group_opt, option_opt)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_84706c73","line":852,"in_reply_to":"ba7be1f8_297fa267","updated":"2015-03-03 07:51:03.000000000","message":"might want to consider changing InvalidDomainConfig to just take a message argument","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":849,"context_line":"                if (not config[group_opt] or not"},{"line_number":850,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":851,"context_line":"                    raise exception.InvalidDomainConfig(group\u003dgroup_opt,"},{"line_number":852,"context_line":"                                                        option\u003dNone)"},{"line_number":853,"context_line":"                for option_opt in config[group_opt]:"},{"line_number":854,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":855,"context_line":"                        group_opt, option_opt)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_f170f309","line":852,"in_reply_to":"ba7be1f8_84706c73","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":854,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":855,"context_line":"                        group_opt, option_opt)"},{"line_number":856,"context_line":""},{"line_number":857,"context_line":"        if current_config and group:"},{"line_number":858,"context_line":"            # Raise an exception if the items in the new config don\u0027t exist in"},{"line_number":859,"context_line":"            # the current config so that the update method provides the"},{"line_number":860,"context_line":"            # correct error semantics."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_64037842","line":857,"updated":"2015-03-03 07:51:03.000000000","message":"make a note that the code should only enter here if we\u0027re performing an update","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":854,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":855,"context_line":"                        group_opt, option_opt)"},{"line_number":856,"context_line":""},{"line_number":857,"context_line":"        if current_config and group:"},{"line_number":858,"context_line":"            # Raise an exception if the items in the new config don\u0027t exist in"},{"line_number":859,"context_line":"            # the current config so that the update method provides the"},{"line_number":860,"context_line":"            # correct error semantics."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_11610739","line":857,"in_reply_to":"ba7be1f8_64037842","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":862,"context_line":"            if not current_group:"},{"line_number":863,"context_line":"                # Trying to update a group that is not part of the"},{"line_number":864,"context_line":"                # original config"},{"line_number":865,"context_line":"                raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":866,"context_line":"            if (group and option and not current_group.get(option)):"},{"line_number":867,"context_line":"                # Trying to update an option that is not part of the"},{"line_number":868,"context_line":"                # original config"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_a9b8f211","line":865,"updated":"2015-03-03 02:03:18.000000000","message":"The exception should say \"Trying to update a group that is not part of the original config\"... can\u0027t expect users to read the source code to figure out what the problem was.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":862,"context_line":"            if not current_group:"},{"line_number":863,"context_line":"                # Trying to update a group that is not part of the"},{"line_number":864,"context_line":"                # original config"},{"line_number":865,"context_line":"                raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":866,"context_line":"            if (group and option and not current_group.get(option)):"},{"line_number":867,"context_line":"                # Trying to update an option that is not part of the"},{"line_number":868,"context_line":"                # original config"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_d14a0fac","line":865,"in_reply_to":"ba7be1f8_a9b8f211","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            return"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if group not in self.groups_supported:"},{"line_number":878,"context_line":"            raise exception.InvalidDomainConfig(group\u003dgroup, option\u003doption)"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"        if option:"},{"line_number":881,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_a98ab261","line":878,"updated":"2015-03-03 02:03:18.000000000","message":"this could say that the group isn\u0027t supported.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            return"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if group not in self.groups_supported:"},{"line_number":878,"context_line":"            raise exception.InvalidDomainConfig(group\u003dgroup, option\u003doption)"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"        if option:"},{"line_number":881,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_343279a7","line":878,"in_reply_to":"ba7be1f8_a98ab261","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":880,"context_line":"        if option:"},{"line_number":881,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"},{"line_number":882,"context_line":"                    self.sensitive_options[group]):"},{"line_number":883,"context_line":"                raise exception.InvalidDomainConfig(group\u003dgroup, option\u003doption)"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    def is_sensitive(self, group, option):"},{"line_number":886,"context_line":"        return option in self.sensitive_options[group]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_69db5a7c","line":883,"updated":"2015-03-03 02:03:18.000000000","message":"this should say that the option is not supported.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":880,"context_line":"        if option:"},{"line_number":881,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"},{"line_number":882,"context_line":"                    self.sensitive_options[group]):"},{"line_number":883,"context_line":"                raise exception.InvalidDomainConfig(group\u003dgroup, option\u003doption)"},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    def is_sensitive(self, group, option):"},{"line_number":886,"context_line":"        return option in self.sensitive_options[group]"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_142d7546","line":883,"in_reply_to":"ba7be1f8_69db5a7c","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        :param group: optional group option name"},{"line_number":893,"context_line":"        :param option: optional option name"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        :returns: both a whitelisted and sensitive list containing a dicts of"},{"line_number":896,"context_line":"                  the individual options"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_dfea2d0e","line":895,"updated":"2015-03-03 07:51:03.000000000","message":"drop the \u0027a\u0027","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        :param group: optional group option name"},{"line_number":893,"context_line":"        :param option: optional option name"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        :returns: both a whitelisted and sensitive list containing a dicts of"},{"line_number":896,"context_line":"                  the individual options"},{"line_number":897,"context_line":""},{"line_number":898,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_de45beb4","line":895,"in_reply_to":"ba7be1f8_dfea2d0e","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                          groups, this has already been filtered to only"},{"line_number":927,"context_line":"                          contain those options to include in the output."},{"line_number":928,"context_line":"        :param req_option: the individual option requested - which is really"},{"line_number":929,"context_line":"                           just a flag to say not to included the group key"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"        :returns: a config dict, including sensitive if specified"},{"line_number":932,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_1fc845a7","line":929,"updated":"2015-03-03 07:51:03.000000000","message":"s/included/include","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                          groups, this has already been filtered to only"},{"line_number":927,"context_line":"                          contain those options to include in the output."},{"line_number":928,"context_line":"        :param req_option: the individual option requested - which is really"},{"line_number":929,"context_line":"                           just a flag to say not to included the group key"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"        :returns: a config dict, including sensitive if specified"},{"line_number":932,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_7ed3f2d4","line":929,"in_reply_to":"ba7be1f8_1fc845a7","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":998,"context_line":""},{"line_number":999,"context_line":"        :returns: a dict of group dicts containing the whitelisted options,"},{"line_number":1000,"context_line":"                  filtered by group and option specified"},{"line_number":1001,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        An example response:"},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_a91472e9","line":1001,"updated":"2015-03-03 02:03:18.000000000","message":"this should be\n\n :raises keystone.exception.DomainConfigNotFound: \u003cwhen this is raised\u003e","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":998,"context_line":""},{"line_number":999,"context_line":"        :returns: a dict of group dicts containing the whitelisted options,"},{"line_number":1000,"context_line":"                  filtered by group and option specified"},{"line_number":1001,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        An example response:"},{"line_number":1004,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_5ee54ea2","line":1001,"in_reply_to":"ba7be1f8_a91472e9","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"5ed84f6c3d7b78fad9641e1f3f25b56d363ec9bb","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        {"},{"line_number":1006,"context_line":"            \u0027ldap\u0027: {"},{"line_number":1007,"context_line":"                \u0027url\u0027: \u0027myurl\u0027"},{"line_number":1008,"context_line":"                \u0027user_tree_dn\u0027: \u0027OU\u003dmyou\u0027}"},{"line_number":1009,"context_line":"            \u0027identity\u0027: {"},{"line_number":1010,"context_line":"                \u0027driver\u0027: \u0027keystone.identity.backends.ldap.Identity\u0027 }"},{"line_number":1011,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_3639abf2","line":1008,"updated":"2015-03-03 11:23:45.000000000","message":"(nit) Needs a comma at the end of this line.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":1005,"context_line":"        {"},{"line_number":1006,"context_line":"            \u0027ldap\u0027: {"},{"line_number":1007,"context_line":"                \u0027url\u0027: \u0027myurl\u0027"},{"line_number":1008,"context_line":"                \u0027user_tree_dn\u0027: \u0027OU\u003dmyou\u0027}"},{"line_number":1009,"context_line":"            \u0027identity\u0027: {"},{"line_number":1010,"context_line":"                \u0027driver\u0027: \u0027keystone.identity.backends.ldap.Identity\u0027 }"},{"line_number":1011,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_fef52251","line":1008,"in_reply_to":"ba7be1f8_3639abf2","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"5ed84f6c3d7b78fad9641e1f3f25b56d363ec9bb","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        :param option: an optional specific option within the group"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"        If group and option are None, then the entire config for the domain"},{"line_number":1031,"context_line":"        is replaced with the supplied config. If group is not none, then"},{"line_number":1032,"context_line":"        just that group of options will be replaced. If group and option are"},{"line_number":1033,"context_line":"        both specified, then just that option is updated."},{"line_number":1034,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_3400c400","line":1031,"updated":"2015-03-03 11:23:45.000000000","message":"(nit) s/none/None\n\nJust to keep it consistent...","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":1028,"context_line":"        :param option: an optional specific option within the group"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"        If group and option are None, then the entire config for the domain"},{"line_number":1031,"context_line":"        is replaced with the supplied config. If group is not none, then"},{"line_number":1032,"context_line":"        just that group of options will be replaced. If group and option are"},{"line_number":1033,"context_line":"        both specified, then just that option is updated."},{"line_number":1034,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_9e8986cc","line":1031,"in_reply_to":"ba7be1f8_3400c400","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"17eabecc7ebee17fbce6bb79f44c8ce7faeb685c","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        both specified, then just that option is updated."},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"        :returns: a dict of groups containing all whitelisted options"},{"line_number":1036,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":1037,"context_line":"        :raises: keystone.exception.InvalidDomainConfig"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_89eeceeb","line":1036,"updated":"2015-03-03 02:03:18.000000000","message":"this should be\n\n :raises keystone.exception.DomainConfigNotFound: \u003cwhen this is raised\u003e\n\n, etc.","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"        both specified, then just that option is updated."},{"line_number":1034,"context_line":""},{"line_number":1035,"context_line":"        :returns: a dict of groups containing all whitelisted options"},{"line_number":1036,"context_line":"        :raises: keystone.exception.DomainConfigNotFound"},{"line_number":1037,"context_line":"        :raises: keystone.exception.InvalidDomainConfig"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_9eb0a68c","line":1036,"in_reply_to":"ba7be1f8_89eeceeb","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"        :raises: keystone.exception.InvalidDomainConfig"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        \"\"\""},{"line_number":1040,"context_line":"        full_config \u003d self.get_config_with_sensitive_info(domain_id)"},{"line_number":1041,"context_line":"        self._assert_valid_config(domain_id, config, group, option,"},{"line_number":1042,"context_line":"                                  current_config\u003dfull_config)"},{"line_number":1043,"context_line":"        whitelisted, sensitive \u003d self._config_to_list(config, group, option)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_84878cb4","line":1040,"updated":"2015-03-03 07:51:03.000000000","message":"call this current_config.\n\nfull makes me think that it\u0027ll support *all* the options, when it\u0027s really just the whitelisted ones","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":1037,"context_line":"        :raises: keystone.exception.InvalidDomainConfig"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        \"\"\""},{"line_number":1040,"context_line":"        full_config \u003d self.get_config_with_sensitive_info(domain_id)"},{"line_number":1041,"context_line":"        self._assert_valid_config(domain_id, config, group, option,"},{"line_number":1042,"context_line":"                                  current_config\u003dfull_config)"},{"line_number":1043,"context_line":"        whitelisted, sensitive \u003d self._config_to_list(config, group, option)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_dea69e53","line":1040,"in_reply_to":"ba7be1f8_84878cb4","updated":"2015-03-03 15:22:45.000000000","message":"no...it has that whitelisted and sensitive ones...","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"        if group or option:"},{"line_number":1062,"context_line":"            # If this is a partial delete, then make sure the items requested"},{"line_number":1063,"context_line":"            # are valid and exist in the current config"},{"line_number":1064,"context_line":"            self._assert_valid_group_and_option(group, option)"},{"line_number":1065,"context_line":"            current_config \u003d self.get_config_with_sensitive_info(domain_id)"},{"line_number":1066,"context_line":"            # Raise an exception if the items in the new config don\u0027t exist in"},{"line_number":1067,"context_line":"            # the current config so that update and delete methods provide the"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_5f147d43","line":1064,"updated":"2015-03-03 07:51:03.000000000","message":"so, i would think deleting an entire group is valid? which is why the initial check is `if group or option:` but in the _assert_() it checks that both group and option are specified.\n\nso if I wanted to delete the entire [ldap] group, i couldn\u0027t do it, since option would be None, and it\u0027ll fail the assertion.\n\n*edit*, nvm, i think this is okay","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"        if group or option:"},{"line_number":1062,"context_line":"            # If this is a partial delete, then make sure the items requested"},{"line_number":1063,"context_line":"            # are valid and exist in the current config"},{"line_number":1064,"context_line":"            self._assert_valid_group_and_option(group, option)"},{"line_number":1065,"context_line":"            current_config \u003d self.get_config_with_sensitive_info(domain_id)"},{"line_number":1066,"context_line":"            # Raise an exception if the items in the new config don\u0027t exist in"},{"line_number":1067,"context_line":"            # the current config so that update and delete methods provide the"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_1e32f60f","line":1064,"in_reply_to":"ba7be1f8_5f147d43","updated":"2015-03-03 15:22:45.000000000","message":"as I think you got..it is ok since it won\u0027t fail in the assertion","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"364b766f9adeb205c6269085a30d3121f4861bc6","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"                # Trying to delete a group that is not part of the original"},{"line_number":1072,"context_line":"                # config"},{"line_number":1073,"context_line":"                raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":1074,"context_line":"            if (group and option and not current_group.get(option)):"},{"line_number":1075,"context_line":"                # Trying to delete an option that is not part of the original"},{"line_number":1076,"context_line":"                # config"},{"line_number":1077,"context_line":"                raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_1f1e855f","line":1074,"updated":"2015-03-03 07:51:03.000000000","message":"unnecessary parenthesis","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b637848f36d17be1aec466c3d3f544a76f56758c","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"                # Trying to delete a group that is not part of the original"},{"line_number":1072,"context_line":"                # config"},{"line_number":1073,"context_line":"                raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"},{"line_number":1074,"context_line":"            if (group and option and not current_group.get(option)):"},{"line_number":1075,"context_line":"                # Trying to delete an option that is not part of the original"},{"line_number":1076,"context_line":"                # config"},{"line_number":1077,"context_line":"                raise exception.DomainConfigNotFound(domain_id\u003ddomain_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_7e3db2dc","line":1074,"in_reply_to":"ba7be1f8_1f1e855f","updated":"2015-03-03 15:22:45.000000000","message":"Done","commit_id":"2bb96e1c83b095246e7f11b5099a7135ebe5d7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":798,"context_line":"    # that are not listed as either whitelisted or sensitive will raise an"},{"line_number":799,"context_line":"    # exception."},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    groups_supported \u003d [\u0027identity\u0027, \u0027ldap\u0027]"},{"line_number":802,"context_line":"    whitelisted_options \u003d {"},{"line_number":803,"context_line":"        \u0027identity\u0027: [\u0027driver\u0027],"},{"line_number":804,"context_line":"        \u0027ldap\u0027: ["}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_a3b38398","line":801,"updated":"2015-03-03 19:52:42.000000000","message":"these are just the keys in whitelisted_options and sensitive_options, so could just use `group in self.whitelisted_options` rather than have another field.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":798,"context_line":"    # that are not listed as either whitelisted or sensitive will raise an"},{"line_number":799,"context_line":"    # exception."},{"line_number":800,"context_line":""},{"line_number":801,"context_line":"    groups_supported \u003d [\u0027identity\u0027, \u0027ldap\u0027]"},{"line_number":802,"context_line":"    whitelisted_options \u003d {"},{"line_number":803,"context_line":"        \u0027identity\u0027: [\u0027driver\u0027],"},{"line_number":804,"context_line":"        \u0027ldap\u0027: ["}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_81e3d7d7","line":801,"in_reply_to":"ba7be1f8_a3b38398","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":821,"context_line":"            \u0027tls_cacertdir\u0027, \u0027use_tls\u0027, \u0027tls_req_cert\u0027, \u0027use_pool\u0027,"},{"line_number":822,"context_line":"            \u0027pool_size\u0027, \u0027pool_retry_max\u0027, \u0027pool_retry_delay\u0027,"},{"line_number":823,"context_line":"            \u0027pool_connection_timeout\u0027, \u0027pool_connection_lifetime\u0027,"},{"line_number":824,"context_line":"            \u0027use_auth_pool\u0027, \u0027auth_pool_size\u0027, \u0027auth_pool_connection_lifetime\u0027"},{"line_number":825,"context_line":"        ]"},{"line_number":826,"context_line":"    }"},{"line_number":827,"context_line":"    sensitive_options \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_43b80711","line":824,"updated":"2015-03-03 19:52:42.000000000","message":"The reasoning for what options are in the list and which aren\u0027t needs to be explained in a comment in the code.\n\nI\u0027d prefer that this split was done in config.py (e.g., define different lists of options that can be pulled in here), but I think that refactoring can go in a separate commit.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":821,"context_line":"            \u0027tls_cacertdir\u0027, \u0027use_tls\u0027, \u0027tls_req_cert\u0027, \u0027use_pool\u0027,"},{"line_number":822,"context_line":"            \u0027pool_size\u0027, \u0027pool_retry_max\u0027, \u0027pool_retry_delay\u0027,"},{"line_number":823,"context_line":"            \u0027pool_connection_timeout\u0027, \u0027pool_connection_lifetime\u0027,"},{"line_number":824,"context_line":"            \u0027use_auth_pool\u0027, \u0027auth_pool_size\u0027, \u0027auth_pool_connection_lifetime\u0027"},{"line_number":825,"context_line":"        ]"},{"line_number":826,"context_line":"    }"},{"line_number":827,"context_line":"    sensitive_options \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_81cd9733","line":824,"in_reply_to":"ba7be1f8_43b80711","updated":"2015-03-03 21:06:02.000000000","message":"have added an explanation","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def _assert_valid_config(self, domain_id, config, group\u003dNone, option\u003dNone,"},{"line_number":836,"context_line":"                             current_config\u003dNone):"},{"line_number":837,"context_line":"        \"\"\"Ensure the combination of config, group and option is valid.\"\"\""},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        # Something must be defined"},{"line_number":840,"context_line":"        if not config and not group and not option:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_83667f4f","line":837,"updated":"2015-03-03 19:52:42.000000000","message":"this docstring should be expanded to explain the parameters. I can\u0027t figure out what they\u0027re for.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def _assert_valid_config(self, domain_id, config, group\u003dNone, option\u003dNone,"},{"line_number":836,"context_line":"                             current_config\u003dNone):"},{"line_number":837,"context_line":"        \"\"\"Ensure the combination of config, group and option is valid.\"\"\""},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"        # Something must be defined"},{"line_number":840,"context_line":"        if not config and not group and not option:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_9c6b3cb8","line":837,"in_reply_to":"ba7be1f8_83667f4f","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":839,"context_line":"        # Something must be defined"},{"line_number":840,"context_line":"        if not config and not group and not option:"},{"line_number":841,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":842,"context_line":"                reason\u003d_(\u0027No options specified\u0027))"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":845,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_637a6bf2","line":842,"updated":"2015-03-03 19:52:42.000000000","message":"this should mention the domain_id.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":839,"context_line":"        # Something must be defined"},{"line_number":840,"context_line":"        if not config and not group and not option:"},{"line_number":841,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":842,"context_line":"                reason\u003d_(\u0027No options specified\u0027))"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":845,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_7c884871","line":842,"in_reply_to":"ba7be1f8_637a6bf2","updated":"2015-03-03 21:06:02.000000000","message":"I\u0027m actually not sure that is relevant here - since what is wrong is that there were no options defined in the request","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        if (group or option) and len(config) !\u003d 1:"},{"line_number":849,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":850,"context_line":"                reason\u003d_(\u0027More than one option specified in the config \u0027"},{"line_number":851,"context_line":"                         \u0027specification\u0027))"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"        # Make sure the groups/options defined in config itself are valid"},{"line_number":854,"context_line":"        if not option:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_6306ebcf","line":851,"updated":"2015-03-03 19:52:42.000000000","message":"I don\u0027t know what this means or what I\u0027m supposed to do about it and I doubt that a user would know. Should at least mention what group or option are involved.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":848,"context_line":"        if (group or option) and len(config) !\u003d 1:"},{"line_number":849,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":850,"context_line":"                reason\u003d_(\u0027More than one option specified in the config \u0027"},{"line_number":851,"context_line":"                         \u0027specification\u0027))"},{"line_number":852,"context_line":""},{"line_number":853,"context_line":"        # Make sure the groups/options defined in config itself are valid"},{"line_number":854,"context_line":"        if not option:"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_bc7e4068","line":851,"in_reply_to":"ba7be1f8_6306ebcf","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":857,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":858,"context_line":"                    raise exception.InvalidDomainConfig("},{"line_number":859,"context_line":"                        reason\u003d_(\u0027Group dict not found in config \u0027"},{"line_number":860,"context_line":"                                 \u0027specification\u0027))"},{"line_number":861,"context_line":"                for option_opt in config[group_opt]:"},{"line_number":862,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":863,"context_line":"                        group_opt, option_opt)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_031e0f0c","line":860,"updated":"2015-03-03 19:52:42.000000000","message":"mention the group in the message... this is another one I don\u0027t think I\u0027ve have any idea what I was supposed to do about it.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":857,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":858,"context_line":"                    raise exception.InvalidDomainConfig("},{"line_number":859,"context_line":"                        reason\u003d_(\u0027Group dict not found in config \u0027"},{"line_number":860,"context_line":"                                 \u0027specification\u0027))"},{"line_number":861,"context_line":"                for option_opt in config[group_opt]:"},{"line_number":862,"context_line":"                    self._assert_valid_group_and_option("},{"line_number":863,"context_line":"                        group_opt, option_opt)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_7cbcc8bb","line":860,"in_reply_to":"ba7be1f8_031e0f0c","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                        group_opt, option_opt)"},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"        if current_config and group:"},{"line_number":866,"context_line":"            # We are doing an update, so raise an exception if the items in the"},{"line_number":867,"context_line":"            # new config don\u0027t exist in the current config so that the update"},{"line_number":868,"context_line":"            # method provides the correct error semantics."},{"line_number":869,"context_line":"            current_group \u003d current_config.get(group)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_03936f5b","line":866,"updated":"2015-03-03 19:52:42.000000000","message":"the docstring for the method should mention that if current_config and group then this is an update.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                        group_opt, option_opt)"},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"        if current_config and group:"},{"line_number":866,"context_line":"            # We are doing an update, so raise an exception if the items in the"},{"line_number":867,"context_line":"            # new config don\u0027t exist in the current config so that the update"},{"line_number":868,"context_line":"            # method provides the correct error semantics."},{"line_number":869,"context_line":"            current_group \u003d current_config.get(group)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_bcb80076","line":866,"in_reply_to":"ba7be1f8_03936f5b","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":868,"context_line":"            # method provides the correct error semantics."},{"line_number":869,"context_line":"            current_group \u003d current_config.get(group)"},{"line_number":870,"context_line":"            if not current_group:"},{"line_number":871,"context_line":"                # Trying to update a group that is not part of the"},{"line_number":872,"context_line":"                # original config"},{"line_number":873,"context_line":"                msg \u003d _(\u0027Trying to update group %(group)s, which is not part \u0027"},{"line_number":874,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_a396233c","line":871,"updated":"2015-03-03 19:52:42.000000000","message":"the message explains why the code is here, so no need for a comment.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":868,"context_line":"            # method provides the correct error semantics."},{"line_number":869,"context_line":"            current_group \u003d current_config.get(group)"},{"line_number":870,"context_line":"            if not current_group:"},{"line_number":871,"context_line":"                # Trying to update a group that is not part of the"},{"line_number":872,"context_line":"                # original config"},{"line_number":873,"context_line":"                msg \u003d _(\u0027Trying to update group %(group)s, which is not part \u0027"},{"line_number":874,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_5c646421","line":871,"in_reply_to":"ba7be1f8_a396233c","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"},{"line_number":875,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":876,"context_line":"            if (group and option and not current_group.get(option)):"},{"line_number":877,"context_line":"                # Trying to update an option that is not part of the"},{"line_number":878,"context_line":"                # original config"},{"line_number":879,"context_line":"                msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":880,"context_line":"                        \u0027%(option)s, which is not part of the original \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_e3a3bb9b","line":877,"updated":"2015-03-03 19:52:42.000000000","message":"the message explains why the code is here, so no need for a comment.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":874,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"},{"line_number":875,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":876,"context_line":"            if (group and option and not current_group.get(option)):"},{"line_number":877,"context_line":"                # Trying to update an option that is not part of the"},{"line_number":878,"context_line":"                # original config"},{"line_number":879,"context_line":"                msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":880,"context_line":"                        \u0027%(option)s, which is not part of the original \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_77ef811e","line":877,"in_reply_to":"ba7be1f8_e3a3bb9b","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":885,"context_line":"        \"\"\"Ensure the combination of group and option is valid.\"\"\""},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"        if not group and not option:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        if group not in self.groups_supported:"},{"line_number":891,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_c36f97fa","line":888,"updated":"2015-03-03 19:52:42.000000000","message":"add a comment why it\u0027s ok to just return here.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":885,"context_line":"        \"\"\"Ensure the combination of group and option is valid.\"\"\""},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"        if not group and not option:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        if group not in self.groups_supported:"},{"line_number":891,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_57bb5de4","line":888,"in_reply_to":"ba7be1f8_c36f97fa","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":887,"context_line":"        if not group and not option:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        if group not in self.groups_supported:"},{"line_number":891,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"},{"line_number":892,"context_line":"                    \u0027for domain specific configurations\u0027) % {\u0027group\u0027: group}"},{"line_number":893,"context_line":"            raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_c6432511","line":890,"updated":"2015-03-03 19:52:42.000000000","message":"seems like the code should check for a group of None before this and raise a better error than  \"Group None is not supported\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":887,"context_line":"        if not group and not option:"},{"line_number":888,"context_line":"            return"},{"line_number":889,"context_line":""},{"line_number":890,"context_line":"        if group not in self.groups_supported:"},{"line_number":891,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"},{"line_number":892,"context_line":"                    \u0027for domain specific configurations\u0027) % {\u0027group\u0027: group}"},{"line_number":893,"context_line":"            raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_72a78fbd","line":890,"in_reply_to":"ba7be1f8_c6432511","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        if option:"},{"line_number":896,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"},{"line_number":897,"context_line":"                    self.sensitive_options[group]):"},{"line_number":898,"context_line":"                msg \u003d _(\u0027Group %(group)s and %(option)s, is not supported \u0027"},{"line_number":899,"context_line":"                        \u0027for domain specific configurations\u0027) % {"},{"line_number":900,"context_line":"                            \u0027group\u0027: group, \u0027option\u0027: option}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_66bb59e5","line":897,"updated":"2015-03-03 19:52:42.000000000","message":"could use \"not self.is_sensitive(group, option)\" rather than duplicating the logic.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":894,"context_line":""},{"line_number":895,"context_line":"        if option:"},{"line_number":896,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"},{"line_number":897,"context_line":"                    self.sensitive_options[group]):"},{"line_number":898,"context_line":"                msg \u003d _(\u0027Group %(group)s and %(option)s, is not supported \u0027"},{"line_number":899,"context_line":"                        \u0027for domain specific configurations\u0027) % {"},{"line_number":900,"context_line":"                            \u0027group\u0027: group, \u0027option\u0027: option}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_9796b53c","line":897,"in_reply_to":"ba7be1f8_66bb59e5","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        if option:"},{"line_number":896,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"},{"line_number":897,"context_line":"                    self.sensitive_options[group]):"},{"line_number":898,"context_line":"                msg \u003d _(\u0027Group %(group)s and %(option)s, is not supported \u0027"},{"line_number":899,"context_line":"                        \u0027for domain specific configurations\u0027) % {"},{"line_number":900,"context_line":"                            \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":901,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_260081aa","line":898,"updated":"2015-03-03 19:52:42.000000000","message":"remove the ,\n\nThis should be like \"Option %(option)s in group \u0027%(group)s\u0027 is not supported...\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        if option:"},{"line_number":896,"context_line":"            if (option not in self.whitelisted_options[group] and option not in"},{"line_number":897,"context_line":"                    self.sensitive_options[group]):"},{"line_number":898,"context_line":"                msg \u003d _(\u0027Group %(group)s and %(option)s, is not supported \u0027"},{"line_number":899,"context_line":"                        \u0027for domain specific configurations\u0027) % {"},{"line_number":900,"context_line":"                            \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":901,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_b7001967","line":898,"in_reply_to":"ba7be1f8_260081aa","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":907,"context_line":"        \"\"\"Build config and sensitive lists for use by backend drivers."},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"        :param config: supplied config structure"},{"line_number":910,"context_line":"        :param group: optional group option name"},{"line_number":911,"context_line":"        :param option: optional option name"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        :returns: both whitelisted and sensitive list containing a dicts of"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_264b21b2","line":910,"updated":"2015-03-03 19:52:42.000000000","message":"remove \"option\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":907,"context_line":"        \"\"\"Build config and sensitive lists for use by backend drivers."},{"line_number":908,"context_line":""},{"line_number":909,"context_line":"        :param config: supplied config structure"},{"line_number":910,"context_line":"        :param group: optional group option name"},{"line_number":911,"context_line":"        :param option: optional option name"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        :returns: both whitelisted and sensitive list containing a dicts of"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_3771890c","line":910,"in_reply_to":"ba7be1f8_264b21b2","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":908,"context_line":""},{"line_number":909,"context_line":"        :param config: supplied config structure"},{"line_number":910,"context_line":"        :param group: optional group option name"},{"line_number":911,"context_line":"        :param option: optional option name"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        :returns: both whitelisted and sensitive list containing a dicts of"},{"line_number":914,"context_line":"                  the individual options"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_013fe7b4","line":911,"updated":"2015-03-03 19:52:42.000000000","message":"why pass in this value? it\u0027s not used.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":908,"context_line":""},{"line_number":909,"context_line":"        :param config: supplied config structure"},{"line_number":910,"context_line":"        :param group: optional group option name"},{"line_number":911,"context_line":"        :param option: optional option name"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        :returns: both whitelisted and sensitive list containing a dicts of"},{"line_number":914,"context_line":"                  the individual options"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_97b31599","line":911,"in_reply_to":"ba7be1f8_013fe7b4","updated":"2015-03-03 21:06:02.000000000","message":"it is used in line 917...but i very badly then re-define it later on.  Had not noticed that - very bad!  Will fix.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":917,"context_line":"        if group and option:"},{"line_number":918,"context_line":"            # The config will just be a dict containing the option and"},{"line_number":919,"context_line":"            # its value"},{"line_number":920,"context_line":"            full_config \u003d {group: config}"},{"line_number":921,"context_line":"        else:"},{"line_number":922,"context_line":"            full_config \u003d config"},{"line_number":923,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_26a7a151","line":920,"updated":"2015-03-03 19:52:42.000000000","message":"it\u0027s really confusing when functions act so different based on the inputs... option isn\u0027t even used other than to check if it\u0027s truey.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":917,"context_line":"        if group and option:"},{"line_number":918,"context_line":"            # The config will just be a dict containing the option and"},{"line_number":919,"context_line":"            # its value"},{"line_number":920,"context_line":"            full_config \u003d {group: config}"},{"line_number":921,"context_line":"        else:"},{"line_number":922,"context_line":"            full_config \u003d config"},{"line_number":923,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_92f083fe","line":920,"in_reply_to":"ba7be1f8_26a7a151","updated":"2015-03-03 21:06:02.000000000","message":"I have improved the comment.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":923,"context_line":""},{"line_number":924,"context_line":"        whitelisted \u003d []"},{"line_number":925,"context_line":"        sensitive \u003d []"},{"line_number":926,"context_line":"        for group in full_config:"},{"line_number":927,"context_line":"            for option in full_config[group]:"},{"line_number":928,"context_line":"                if self.is_sensitive(group, option):"},{"line_number":929,"context_line":"                    sensitive.append({\u0027group\u0027: group, \u0027option\u0027: option,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_26032111","line":926,"updated":"2015-03-03 19:52:42.000000000","message":"it\u0027s even more confusing when variables are redefined.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":923,"context_line":""},{"line_number":924,"context_line":"        whitelisted \u003d []"},{"line_number":925,"context_line":"        sensitive \u003d []"},{"line_number":926,"context_line":"        for group in full_config:"},{"line_number":927,"context_line":"            for option in full_config[group]:"},{"line_number":928,"context_line":"                if self.is_sensitive(group, option):"},{"line_number":929,"context_line":"                    sensitive.append({\u0027group\u0027: group, \u0027option\u0027: option,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_d70cad44","line":926,"in_reply_to":"ba7be1f8_26032111","updated":"2015-03-03 21:06:02.000000000","message":"agreed....very very bad...unintentional...and now fixed","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":989,"context_line":""},{"line_number":990,"context_line":"        :returns: a dict of group dicts containing the options, with any that"},{"line_number":991,"context_line":"                  are sensitive removed"},{"line_number":992,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":993,"context_line":"                 contains options we do not support"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_06245d0b","line":992,"updated":"2015-03-03 19:52:42.000000000","message":"remove the : after \":raises\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":989,"context_line":""},{"line_number":990,"context_line":"        :returns: a dict of group dicts containing the options, with any that"},{"line_number":991,"context_line":"                  are sensitive removed"},{"line_number":992,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":993,"context_line":"                 contains options we do not support"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_b20bc722","line":992,"in_reply_to":"ba7be1f8_06245d0b","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        :returns: a dict of group dicts containing the whitelisted options,"},{"line_number":1019,"context_line":"                  filtered by group and option specified"},{"line_number":1020,"context_line":"        :raises: keystone.exception.DomainConfigNotFound: when no config found"},{"line_number":1021,"context_line":"                 that matches domain_id, group and option specified"},{"line_number":1022,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":1023,"context_line":"                 and group/option parameters specify an option we do not"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_26d8811d","line":1020,"updated":"2015-03-03 19:52:42.000000000","message":"remove the : after \":raises\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        :returns: a dict of group dicts containing the whitelisted options,"},{"line_number":1019,"context_line":"                  filtered by group and option specified"},{"line_number":1020,"context_line":"        :raises: keystone.exception.DomainConfigNotFound: when no config found"},{"line_number":1021,"context_line":"                 that matches domain_id, group and option specified"},{"line_number":1022,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":1023,"context_line":"                 and group/option parameters specify an option we do not"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_1248135b","line":1020,"in_reply_to":"ba7be1f8_26d8811d","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"                  filtered by group and option specified"},{"line_number":1020,"context_line":"        :raises: keystone.exception.DomainConfigNotFound: when no config found"},{"line_number":1021,"context_line":"                 that matches domain_id, group and option specified"},{"line_number":1022,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":1023,"context_line":"                 and group/option parameters specify an option we do not"},{"line_number":1024,"context_line":"                 support"},{"line_number":1025,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_e6d109fc","line":1022,"updated":"2015-03-03 19:52:42.000000000","message":"remove the : after \":raises\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"                  filtered by group and option specified"},{"line_number":1020,"context_line":"        :raises: keystone.exception.DomainConfigNotFound: when no config found"},{"line_number":1021,"context_line":"                 that matches domain_id, group and option specified"},{"line_number":1022,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":1023,"context_line":"                 and group/option parameters specify an option we do not"},{"line_number":1024,"context_line":"                 support"},{"line_number":1025,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_32451743","line":1022,"in_reply_to":"ba7be1f8_e6d109fc","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        both specified, then just that option is updated."},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"        :returns: a dict of groups containing all whitelisted options"},{"line_number":1060,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":1061,"context_line":"                 and group/option parameters specify an option we do not"},{"line_number":1062,"context_line":"                 support or one that does not exist in the original config"},{"line_number":1063,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_66051979","line":1060,"updated":"2015-03-03 19:52:42.000000000","message":"remove the : after \":raises\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        both specified, then just that option is updated."},{"line_number":1058,"context_line":""},{"line_number":1059,"context_line":"        :returns: a dict of groups containing all whitelisted options"},{"line_number":1060,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when the config"},{"line_number":1061,"context_line":"                 and group/option parameters specify an option we do not"},{"line_number":1062,"context_line":"                 support or one that does not exist in the original config"},{"line_number":1063,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_52752b96","line":1060,"in_reply_to":"ba7be1f8_66051979","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":1092,"context_line":"        be deleted. If group and option are both specified, then just that"},{"line_number":1093,"context_line":"        option is deleted."},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when group/option"},{"line_number":1096,"context_line":"                 parameters specify an option we do not support or one that"},{"line_number":1097,"context_line":"                 does not exist in the original config."},{"line_number":1098,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_860a0d88","line":1095,"updated":"2015-03-03 19:52:42.000000000","message":"remove the : after \":raises\"","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":1092,"context_line":"        be deleted. If group and option are both specified, then just that"},{"line_number":1093,"context_line":"        option is deleted."},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        :raises: keystone.exception.InvalidDomainConfig: when group/option"},{"line_number":1096,"context_line":"                 parameters specify an option we do not support or one that"},{"line_number":1097,"context_line":"                 does not exist in the original config."},{"line_number":1098,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_325c3719","line":1095,"in_reply_to":"ba7be1f8_860a0d88","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"            # correct error semantics."},{"line_number":1108,"context_line":"            current_group \u003d current_config.get(group)"},{"line_number":1109,"context_line":"            if not current_group:"},{"line_number":1110,"context_line":"                # Trying to delete a group that is not part of the original"},{"line_number":1111,"context_line":"                # config"},{"line_number":1112,"context_line":"                msg \u003d _(\u0027Trying to delete group %(group)s, which is not part \u0027"},{"line_number":1113,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_06ad3de9","line":1110,"updated":"2015-03-03 19:52:42.000000000","message":"this comment is just a copy of the message. Remove it.","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"            # correct error semantics."},{"line_number":1108,"context_line":"            current_group \u003d current_config.get(group)"},{"line_number":1109,"context_line":"            if not current_group:"},{"line_number":1110,"context_line":"                # Trying to delete a group that is not part of the original"},{"line_number":1111,"context_line":"                # config"},{"line_number":1112,"context_line":"                msg \u003d _(\u0027Trying to delete group %(group)s, which is not part \u0027"},{"line_number":1113,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_d2af5be1","line":1110,"in_reply_to":"ba7be1f8_06ad3de9","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2005416a4991ced1ce2bf572be72c0b2a98cae1b","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"            if group and option and not current_group.get(option):"},{"line_number":1116,"context_line":"                # Trying to delete an option that is not part of the original"},{"line_number":1117,"context_line":"                # config"},{"line_number":1118,"context_line":"                msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":1119,"context_line":"                        \u0027%(option)s, which is not part of the original \u0027"},{"line_number":1120,"context_line":"                        \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1121,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_265fa110","line":1118,"updated":"2015-03-03 19:52:42.000000000","message":"The message says \"update\" but the comment says \"delete\". They should be consistent (or remove the comment since it\u0027s already explained).","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d5d7f062a4b15a865fa7833a4a514e4a25c6e3a7","unresolved":false,"context_lines":[{"line_number":1115,"context_line":"            if group and option and not current_group.get(option):"},{"line_number":1116,"context_line":"                # Trying to delete an option that is not part of the original"},{"line_number":1117,"context_line":"                # config"},{"line_number":1118,"context_line":"                msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":1119,"context_line":"                        \u0027%(option)s, which is not part of the original \u0027"},{"line_number":1120,"context_line":"                        \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1121,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_128d737c","line":1118,"in_reply_to":"ba7be1f8_265fa110","updated":"2015-03-03 21:06:02.000000000","message":"Done","commit_id":"70fe08cf81cdac6d2ad919968bf0b8ae09434ae9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"49e4e69e1b41b2f108d52473569e2b690e12ec87","unresolved":false,"context_lines":[{"line_number":858,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":859,"context_line":"                reason\u003d_(\u0027No options specified\u0027))"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        # If there is a group or option, then there should be only one entry"},{"line_number":864,"context_line":"        # in the config"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_340ee0e5","line":861,"updated":"2015-03-03 22:56:27.000000000","message":"all this stuff that only applies in the update case should be moved to the caller. It\u0027s difficult to figure out which parts only apply to update and which apply to create... there seems to be very little that applies to create in this method.","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60c4c0c0ac9c723afebe3eb32e2ad86410e92874","unresolved":false,"context_lines":[{"line_number":858,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":859,"context_line":"                reason\u003d_(\u0027No options specified\u0027))"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        self._assert_valid_group_and_option(group, option)"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"        # If there is a group or option, then there should be only one entry"},{"line_number":864,"context_line":"        # in the config"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_e719f9d1","line":861,"in_reply_to":"ba7be1f8_340ee0e5","updated":"2015-03-04 01:03:14.000000000","message":"Done","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"49e4e69e1b41b2f108d52473569e2b690e12ec87","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        if not option:"},{"line_number":879,"context_line":"            for group_opt in config:"},{"line_number":880,"context_line":"                if (not config[group_opt] or not"},{"line_number":881,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":882,"context_line":"                    msg \u003d _(\u0027The value of group %(group)s specified in the \u0027"},{"line_number":883,"context_line":"                            \u0027config should be a dictionary of options \u0027) % {"},{"line_number":884,"context_line":"                                \u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_f4bc48de","line":881,"updated":"2015-03-03 22:56:27.000000000","message":"why wouldn\u0027t it be? we should have checked this sooner.","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60c4c0c0ac9c723afebe3eb32e2ad86410e92874","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        if not option:"},{"line_number":879,"context_line":"            for group_opt in config:"},{"line_number":880,"context_line":"                if (not config[group_opt] or not"},{"line_number":881,"context_line":"                        isinstance(config[group_opt], dict)):"},{"line_number":882,"context_line":"                    msg \u003d _(\u0027The value of group %(group)s specified in the \u0027"},{"line_number":883,"context_line":"                            \u0027config should be a dictionary of options \u0027) % {"},{"line_number":884,"context_line":"                                \u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_c71eb5ba","line":881,"in_reply_to":"ba7be1f8_f4bc48de","updated":"2015-03-04 01:03:14.000000000","message":"Done","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9eb79e64cb7cfab181e2e76ee1a0b3f57ff315c3","unresolved":false,"context_lines":[{"line_number":917,"context_line":"            return"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"        if (group and group not in self.whitelisted_options and"},{"line_number":920,"context_line":"                group not in self.senitive_options):"},{"line_number":921,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"},{"line_number":922,"context_line":"                    \u0027for domain specific configurations\u0027) % {\u0027group\u0027: group}"},{"line_number":923,"context_line":"            raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_e962b53c","line":920,"updated":"2015-03-03 22:41:09.000000000","message":"self.senitive_options -\u003e self.sensitive_options (this needs a test)","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60c4c0c0ac9c723afebe3eb32e2ad86410e92874","unresolved":false,"context_lines":[{"line_number":917,"context_line":"            return"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"        if (group and group not in self.whitelisted_options and"},{"line_number":920,"context_line":"                group not in self.senitive_options):"},{"line_number":921,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"},{"line_number":922,"context_line":"                    \u0027for domain specific configurations\u0027) % {\u0027group\u0027: group}"},{"line_number":923,"context_line":"            raise exception.InvalidDomainConfig(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_ef8ab519","line":920,"in_reply_to":"ba7be1f8_e962b53c","updated":"2015-03-04 01:03:14.000000000","message":"Done","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9eb79e64cb7cfab181e2e76ee1a0b3f57ff315c3","unresolved":false,"context_lines":[{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        :param config: supplied config structure"},{"line_number":940,"context_line":"        :param group: optional group name"},{"line_number":941,"context_line":"        :param option: optional option name"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        :returns: both whitelisted and sensitive list containing a dicts of"},{"line_number":944,"context_line":"                  the individual options"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_89ff7933","line":941,"updated":"2015-03-03 22:41:09.000000000","message":"the value of option is never used... it\u0027s not used as an option name it\u0027s just used as an indicator... is this intentional?","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60c4c0c0ac9c723afebe3eb32e2ad86410e92874","unresolved":false,"context_lines":[{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        :param config: supplied config structure"},{"line_number":940,"context_line":"        :param group: optional group name"},{"line_number":941,"context_line":"        :param option: optional option name"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        :returns: both whitelisted and sensitive list containing a dicts of"},{"line_number":944,"context_line":"                  the individual options"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_af327def","line":941,"in_reply_to":"ba7be1f8_89ff7933","updated":"2015-03-04 01:03:14.000000000","message":"As per the comment below, I\u0027ve moved this logic out to the caller","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c1d9c2fc3a3be6a24fd61975a6136171732b6b77","unresolved":false,"context_lines":[{"line_number":950,"context_line":"            # group in question, to simplify the processing logic below."},{"line_number":951,"context_line":"            full_config \u003d {group: config}"},{"line_number":952,"context_line":"        else:"},{"line_number":953,"context_line":"            full_config \u003d config"},{"line_number":954,"context_line":""},{"line_number":955,"context_line":"        whitelisted \u003d []"},{"line_number":956,"context_line":"        sensitive \u003d []"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_54e994b5","line":953,"updated":"2015-03-03 22:59:21.000000000","message":"I think this function would be easier to understand if the caller passed in the full_config rather than having this function figure it out. It\u0027s only called from 2 places.","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"60c4c0c0ac9c723afebe3eb32e2ad86410e92874","unresolved":false,"context_lines":[{"line_number":950,"context_line":"            # group in question, to simplify the processing logic below."},{"line_number":951,"context_line":"            full_config \u003d {group: config}"},{"line_number":952,"context_line":"        else:"},{"line_number":953,"context_line":"            full_config \u003d config"},{"line_number":954,"context_line":""},{"line_number":955,"context_line":"        whitelisted \u003d []"},{"line_number":956,"context_line":"        sensitive \u003d []"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_6f3c05c9","line":953,"in_reply_to":"ba7be1f8_54e994b5","updated":"2015-03-04 01:03:14.000000000","message":"Done","commit_id":"50c0c7945e97fc5996a8cc6674c0a85fd16e097d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":834,"context_line":"    def __init__(self):"},{"line_number":835,"context_line":"        super(DomainConfigManager, self).__init__(CONF.domain_config.driver)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def _assert_valid_config(self, domain_id, config):"},{"line_number":838,"context_line":"        \"\"\"Ensure the options in the config are valid."},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"        This method is called to validate the request config in create and"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_40e70bac","line":837,"updated":"2015-03-04 03:05:44.000000000","message":"domain_id isn\u0027t used.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":834,"context_line":"    def __init__(self):"},{"line_number":835,"context_line":"        super(DomainConfigManager, self).__init__(CONF.domain_config.driver)"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    def _assert_valid_config(self, domain_id, config):"},{"line_number":838,"context_line":"        \"\"\"Ensure the options in the config are valid."},{"line_number":839,"context_line":""},{"line_number":840,"context_line":"        This method is called to validate the request config in create and"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_47b44ef2","line":837,"in_reply_to":"ba7be1f8_40e70bac","updated":"2015-03-04 06:11:28.000000000","message":"Done","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":840,"context_line":"        This method is called to validate the request config in create and"},{"line_number":841,"context_line":"        update manager calls."},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        :param domain_id: the domain in question"},{"line_number":844,"context_line":"        :param config: config structure being created or updated"},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_1b3ae498","line":843,"updated":"2015-03-04 03:05:44.000000000","message":"domain_id isn\u0027t used. Is this intentional?","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":840,"context_line":"        This method is called to validate the request config in create and"},{"line_number":841,"context_line":"        update manager calls."},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"        :param domain_id: the domain in question"},{"line_number":844,"context_line":"        :param config: config structure being created or updated"},{"line_number":845,"context_line":""},{"line_number":846,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_67b952e9","line":843,"in_reply_to":"ba7be1f8_1b3ae498","updated":"2015-03-04 06:11:28.000000000","message":"Done","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":852,"context_line":"        # Make sure the groups/options defined in config itself are valid"},{"line_number":853,"context_line":"        for group in config:"},{"line_number":854,"context_line":"            if (not config[group] or not"},{"line_number":855,"context_line":"                    isinstance(config[group], dict)):"},{"line_number":856,"context_line":"                msg \u003d _(\u0027The value of group %(group)s specified in the \u0027"},{"line_number":857,"context_line":"                        \u0027config should be a dictionary of options \u0027) % {"},{"line_number":858,"context_line":"                            \u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_808bc3c1","line":855,"updated":"2015-03-04 03:05:44.000000000","message":"why wouldn\u0027t it be a dict? seems like this should have been checked earlier (in the controller)","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":852,"context_line":"        # Make sure the groups/options defined in config itself are valid"},{"line_number":853,"context_line":"        for group in config:"},{"line_number":854,"context_line":"            if (not config[group] or not"},{"line_number":855,"context_line":"                    isinstance(config[group], dict)):"},{"line_number":856,"context_line":"                msg \u003d _(\u0027The value of group %(group)s specified in the \u0027"},{"line_number":857,"context_line":"                        \u0027config should be a dictionary of options \u0027) % {"},{"line_number":858,"context_line":"                            \u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_e772a248","line":855,"in_reply_to":"ba7be1f8_808bc3c1","updated":"2015-03-04 06:11:28.000000000","message":"I agree that this could be done there, although was trying to make the manager level more resilient.  Happy to move it to here the controller in a follow-on patch.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":854,"context_line":"            if (not config[group] or not"},{"line_number":855,"context_line":"                    isinstance(config[group], dict)):"},{"line_number":856,"context_line":"                msg \u003d _(\u0027The value of group %(group)s specified in the \u0027"},{"line_number":857,"context_line":"                        \u0027config should be a dictionary of options \u0027) % {"},{"line_number":858,"context_line":"                            \u0027group\u0027: group}"},{"line_number":859,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":860,"context_line":"            for option in config[group]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_a051a763","line":857,"updated":"2015-03-04 03:05:44.000000000","message":"remove trailing space.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":854,"context_line":"            if (not config[group] or not"},{"line_number":855,"context_line":"                    isinstance(config[group], dict)):"},{"line_number":856,"context_line":"                msg \u003d _(\u0027The value of group %(group)s specified in the \u0027"},{"line_number":857,"context_line":"                        \u0027config should be a dictionary of options \u0027) % {"},{"line_number":858,"context_line":"                            \u0027group\u0027: group}"},{"line_number":859,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":860,"context_line":"            for option in config[group]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_078fb624","line":857,"in_reply_to":"ba7be1f8_a051a763","updated":"2015-03-04 06:11:28.000000000","message":"Done","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            return"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if not group and option:"},{"line_number":878,"context_line":"            # Our API structure should prevent this from every happening, so if"},{"line_number":879,"context_line":"            # it does, then this is coding error."},{"line_number":880,"context_line":"            msg \u003d _(\u0027Option %(option)s found with no group specified while \u0027"},{"line_number":881,"context_line":"                    \u0027checking domain configuration request\u0027) % {"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_5b57fcc9","line":878,"updated":"2015-03-04 03:05:44.000000000","message":"change \"every\" to \"ever\"","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":875,"context_line":"            return"},{"line_number":876,"context_line":""},{"line_number":877,"context_line":"        if not group and option:"},{"line_number":878,"context_line":"            # Our API structure should prevent this from every happening, so if"},{"line_number":879,"context_line":"            # it does, then this is coding error."},{"line_number":880,"context_line":"            msg \u003d _(\u0027Option %(option)s found with no group specified while \u0027"},{"line_number":881,"context_line":"                    \u0027checking domain configuration request\u0027) % {"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_a73b4a37","line":878,"in_reply_to":"ba7be1f8_5b57fcc9","updated":"2015-03-04 06:11:28.000000000","message":"Done","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":896,"context_line":"                            \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":897,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"    def is_sensitive(self, group, option):"},{"line_number":900,"context_line":"        return option in self.sensitive_options[group]"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"    def _config_to_list(self, config):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_bbf638d5","line":899,"updated":"2015-03-04 03:05:44.000000000","message":"any reason this is public?","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":896,"context_line":"                            \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":897,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"    def is_sensitive(self, group, option):"},{"line_number":900,"context_line":"        return option in self.sensitive_options[group]"},{"line_number":901,"context_line":""},{"line_number":902,"context_line":"    def _config_to_list(self, config):"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_e74542b4","line":899,"in_reply_to":"ba7be1f8_bbf638d5","updated":"2015-03-04 06:11:28.000000000","message":"No, good catch","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                else:"},{"line_number":914,"context_line":"                    whitelisted.append({"},{"line_number":915,"context_line":"                        \u0027group\u0027: group, \u0027option\u0027: option,"},{"line_number":916,"context_line":"                        \u0027value\u0027: config[group][option]})"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        return whitelisted, sensitive"},{"line_number":919,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_1bd66428","line":916,"updated":"2015-03-04 03:05:44.000000000","message":"there could be less copy-pasting:\n\n the_list \u003d sensitive if self.is_sensitive(group, option) else whitelisted\n the_list.append({...})","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                else:"},{"line_number":914,"context_line":"                    whitelisted.append({"},{"line_number":915,"context_line":"                        \u0027group\u0027: group, \u0027option\u0027: option,"},{"line_number":916,"context_line":"                        \u0027value\u0027: config[group][option]})"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":"        return whitelisted, sensitive"},{"line_number":919,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_07609634","line":916,"in_reply_to":"ba7be1f8_1bd66428","updated":"2015-03-04 06:11:28.000000000","message":"nice suggestion","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":934,"context_line":"        \"\"\""},{"line_number":935,"context_line":"        the_list \u003d copy.copy(whitelisted)"},{"line_number":936,"context_line":"        if sensitive:"},{"line_number":937,"context_line":"            the_list +\u003d sensitive"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        if req_option and the_list:"},{"line_number":940,"context_line":"            # The request was specific to an individual option, so"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_5bb37c09","line":937,"updated":"2015-03-04 03:05:44.000000000","message":"suggest\n\n the_list \u003d copy.copy(whitelisted) + (sensitive or [])","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":934,"context_line":"        \"\"\""},{"line_number":935,"context_line":"        the_list \u003d copy.copy(whitelisted)"},{"line_number":936,"context_line":"        if sensitive:"},{"line_number":937,"context_line":"            the_list +\u003d sensitive"},{"line_number":938,"context_line":""},{"line_number":939,"context_line":"        if req_option and the_list:"},{"line_number":940,"context_line":"            # The request was specific to an individual option, so"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_8753a66b","line":937,"in_reply_to":"ba7be1f8_5bb37c09","updated":"2015-03-04 06:11:28.000000000","message":"Done","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        config \u003d {}"},{"line_number":956,"context_line":"        for option in the_list:"},{"line_number":957,"context_line":"            if option[\u0027group\u0027] not in config:"},{"line_number":958,"context_line":"                config[option[\u0027group\u0027]] \u003d {}"},{"line_number":959,"context_line":"            config[option[\u0027group\u0027]][option[\u0027option\u0027]] \u003d option[\u0027value\u0027]"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        return config"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_7bada09a","line":958,"updated":"2015-03-04 03:05:44.000000000","message":"lines 957-958 is setdefault...\n\n config.setdefault(option[\u0027group\u0027], {})","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        config \u003d {}"},{"line_number":956,"context_line":"        for option in the_list:"},{"line_number":957,"context_line":"            if option[\u0027group\u0027] not in config:"},{"line_number":958,"context_line":"                config[option[\u0027group\u0027]] \u003d {}"},{"line_number":959,"context_line":"            config[option[\u0027group\u0027]][option[\u0027option\u0027]] \u003d option[\u0027value\u0027]"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"        return config"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_87dac6e7","line":958,"in_reply_to":"ba7be1f8_7bada09a","updated":"2015-03-04 06:11:28.000000000","message":"yep, you are correct! Fixed.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":984,"context_line":"        # ...and create the new one"},{"line_number":985,"context_line":"        for option in whitelisted:"},{"line_number":986,"context_line":"            self.driver.create_config_option("},{"line_number":987,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027])"},{"line_number":988,"context_line":"        for option in sensitive:"},{"line_number":989,"context_line":"            self.driver.create_config_option("},{"line_number":990,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_9ba5f4a3","line":987,"updated":"2015-03-04 03:05:44.000000000","message":"**option doesn\u0027t work? Why not have create_config_option take a list of options, or take a whole config? The way it is now, each config option is going to be in a different transaction, so if there\u0027s a failure halfway through then it\u0027ll be partially completed and you\u0027ll have an invalid configuration.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":984,"context_line":"        # ...and create the new one"},{"line_number":985,"context_line":"        for option in whitelisted:"},{"line_number":986,"context_line":"            self.driver.create_config_option("},{"line_number":987,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027])"},{"line_number":988,"context_line":"        for option in sensitive:"},{"line_number":989,"context_line":"            self.driver.create_config_option("},{"line_number":990,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_877646d7","line":987,"in_reply_to":"ba7be1f8_9ba5f4a3","updated":"2015-03-04 06:11:28.000000000","message":"I agree there is a chance of that - and unless we join the requests for writing to both whitelisted and sensitive tables, we always have that risk.  I\u0027d suggest that we accept this small risk - but perhaps consider that for a later patch/update","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":987,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027])"},{"line_number":988,"context_line":"        for option in sensitive:"},{"line_number":989,"context_line":"            self.driver.create_config_option("},{"line_number":990,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027],"},{"line_number":991,"context_line":"                sensitive\u003dTrue)"},{"line_number":992,"context_line":"        return self._list_to_config(whitelisted)"},{"line_number":993,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_bba0f890","line":990,"updated":"2015-03-04 03:05:44.000000000","message":"**option doesn\u0027t work?","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":987,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027])"},{"line_number":988,"context_line":"        for option in sensitive:"},{"line_number":989,"context_line":"            self.driver.create_config_option("},{"line_number":990,"context_line":"                domain_id, option[\u0027group\u0027], option[\u0027option\u0027], option[\u0027value\u0027],"},{"line_number":991,"context_line":"                sensitive\u003dTrue)"},{"line_number":992,"context_line":"        return self._list_to_config(whitelisted)"},{"line_number":993,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_c7803e8e","line":990,"in_reply_to":"ba7be1f8_bba0f890","updated":"2015-03-04 06:11:28.000000000","message":"ditto","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            # If there is a group or option, then there should be only one"},{"line_number":1059,"context_line":"            # entry in the config"},{"line_number":1060,"context_line":"            if group and len(config) !\u003d 1:"},{"line_number":1061,"context_line":"                if group and not option:"},{"line_number":1062,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, so that, and \u0027"},{"line_number":1063,"context_line":"                            \u0027only that, group must be specified in the \u0027"},{"line_number":1064,"context_line":"                            \u0027config\u0027) % {\u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_db4cccca","line":1061,"updated":"2015-03-04 03:05:44.000000000","message":"group was already checked on the previous line.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1058,"context_line":"            # If there is a group or option, then there should be only one"},{"line_number":1059,"context_line":"            # entry in the config"},{"line_number":1060,"context_line":"            if group and len(config) !\u003d 1:"},{"line_number":1061,"context_line":"                if group and not option:"},{"line_number":1062,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, so that, and \u0027"},{"line_number":1063,"context_line":"                            \u0027only that, group must be specified in the \u0027"},{"line_number":1064,"context_line":"                            \u0027config\u0027) % {\u0027group\u0027: group}"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_47444e74","line":1061,"in_reply_to":"ba7be1f8_db4cccca","updated":"2015-03-04 06:11:28.000000000","message":"Done","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"                                \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1070,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"            if group:"},{"line_number":1073,"context_line":"                # Make sure the items specified for update in the new config"},{"line_number":1074,"context_line":"                # exist in the current original config"},{"line_number":1075,"context_line":"                original_group \u003d original_config.get(group)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_fb47d0a0","line":1072,"updated":"2015-03-04 03:05:44.000000000","message":"there could be a single check for if group at the beginning.\n\nCan there really be an update with no group?","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1069,"context_line":"                                \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1070,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"            if group:"},{"line_number":1073,"context_line":"                # Make sure the items specified for update in the new config"},{"line_number":1074,"context_line":"                # exist in the current original config"},{"line_number":1075,"context_line":"                original_group \u003d original_config.get(group)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_c7575e25","line":1072,"in_reply_to":"ba7be1f8_fb47d0a0","updated":"2015-03-04 06:11:28.000000000","message":"I was just preventing too much indenting...There could be an update without group....I think less likely., I agree...but you could supply a config with multiple groups/options that you want added to the existing config","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, which is not \u0027"},{"line_number":1078,"context_line":"                            \u0027part of the original config\u0027) % {\u0027group\u0027: group}"},{"line_number":1079,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1080,"context_line":"                if (group and option and not original_group.get(option)):"},{"line_number":1081,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":1082,"context_line":"                            \u0027%(option)s, which is not part of the original \u0027"},{"line_number":1083,"context_line":"                            \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_3bf4085a","line":1080,"updated":"2015-03-04 03:05:44.000000000","message":"no need to check group again... it\u0027s been checked 4 times already.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, which is not \u0027"},{"line_number":1078,"context_line":"                            \u0027part of the original config\u0027) % {\u0027group\u0027: group}"},{"line_number":1079,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1080,"context_line":"                if (group and option and not original_group.get(option)):"},{"line_number":1081,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":1082,"context_line":"                            \u0027%(option)s, which is not part of the original \u0027"},{"line_number":1083,"context_line":"                            \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_a7218ab6","line":1080,"in_reply_to":"ba7be1f8_3bf4085a","updated":"2015-03-04 06:11:28.000000000","message":":-)","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1088,"context_line":""},{"line_number":1089,"context_line":"            try:"},{"line_number":1090,"context_line":"                self.driver.create_config_option("},{"line_number":1091,"context_line":"                    domain_id, new_option[\u0027group\u0027], new_option[\u0027option\u0027],"},{"line_number":1092,"context_line":"                    new_option[\u0027value\u0027], sensitive\u003dsensitive)"},{"line_number":1093,"context_line":"            except exception.Conflict:"},{"line_number":1094,"context_line":"                self.driver.update_config_option("}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_dbfa0c42","line":1091,"updated":"2015-03-04 03:05:44.000000000","message":"what is new_option? I assume this should be option.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1088,"context_line":""},{"line_number":1089,"context_line":"            try:"},{"line_number":1090,"context_line":"                self.driver.create_config_option("},{"line_number":1091,"context_line":"                    domain_id, new_option[\u0027group\u0027], new_option[\u0027option\u0027],"},{"line_number":1092,"context_line":"                    new_option[\u0027value\u0027], sensitive\u003dsensitive)"},{"line_number":1093,"context_line":"            except exception.Conflict:"},{"line_number":1094,"context_line":"                self.driver.update_config_option("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_6a0e7736","line":1091,"in_reply_to":"ba7be1f8_dbfa0c42","updated":"2015-03-04 06:11:28.000000000","message":"oops, yes","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1092,"context_line":"                    new_option[\u0027value\u0027], sensitive\u003dsensitive)"},{"line_number":1093,"context_line":"            except exception.Conflict:"},{"line_number":1094,"context_line":"                self.driver.update_config_option("},{"line_number":1095,"context_line":"                    domain_id, new_option[\u0027group\u0027], new_option[\u0027option\u0027],"},{"line_number":1096,"context_line":"                    new_option[\u0027value\u0027], sensitive\u003dsensitive)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"        original_full_config \u003d self.get_config_with_sensitive_info(domain_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_9b8b34c2","line":1095,"updated":"2015-03-04 03:05:44.000000000","message":"new_option -\u003e option","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1092,"context_line":"                    new_option[\u0027value\u0027], sensitive\u003dsensitive)"},{"line_number":1093,"context_line":"            except exception.Conflict:"},{"line_number":1094,"context_line":"                self.driver.update_config_option("},{"line_number":1095,"context_line":"                    domain_id, new_option[\u0027group\u0027], new_option[\u0027option\u0027],"},{"line_number":1096,"context_line":"                    new_option[\u0027value\u0027], sensitive\u003dsensitive)"},{"line_number":1097,"context_line":""},{"line_number":1098,"context_line":"        original_full_config \u003d self.get_config_with_sensitive_info(domain_id)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_8a12cb56","line":1095,"in_reply_to":"ba7be1f8_9b8b34c2","updated":"2015-03-04 06:11:28.000000000","message":"ditto","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"                does not exist in the original config."},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        \"\"\""},{"line_number":1134,"context_line":"        if group or option:"},{"line_number":1135,"context_line":"            # If this is a partial delete, then make sure the items requested"},{"line_number":1136,"context_line":"            # are valid and exist in the current config"},{"line_number":1137,"context_line":"            self._assert_valid_group_and_option(group, option)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_bb09d832","line":1134,"updated":"2015-03-04 03:05:44.000000000","message":"should this be an \"or\" or an \"and\"? or indicates that you can delete the option from all the groups it\u0027s in.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1131,"context_line":"                does not exist in the original config."},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        \"\"\""},{"line_number":1134,"context_line":"        if group or option:"},{"line_number":1135,"context_line":"            # If this is a partial delete, then make sure the items requested"},{"line_number":1136,"context_line":"            # are valid and exist in the current config"},{"line_number":1137,"context_line":"            self._assert_valid_group_and_option(group, option)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_aaab0fd5","line":1134,"in_reply_to":"ba7be1f8_bb09d832","updated":"2015-03-04 06:11:28.000000000","message":"agree it looks odd as is....but was ensuring the invalid case of the option being defined by not group was checked by _assert_valid_group_and_option.  Have housed that call out of the if statement to achieve that, and changed the if clause.","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"            if not current_group:"},{"line_number":1144,"context_line":"                msg \u003d _(\u0027Trying to delete group %(group)s, which is not part \u0027"},{"line_number":1145,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"},{"line_number":1146,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1147,"context_line":"            if group and option and not current_group.get(option):"},{"line_number":1148,"context_line":"                msg \u003d _(\u0027Trying to delete option %(option)s in group \u0027"},{"line_number":1149,"context_line":"                        \u0027%(group)s, which is not part of the original \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_b6372de2","line":1146,"updated":"2015-03-04 03:05:44.000000000","message":"shouldn\u0027t this be a NotFound?","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"            if not current_group:"},{"line_number":1144,"context_line":"                msg \u003d _(\u0027Trying to delete group %(group)s, which is not part \u0027"},{"line_number":1145,"context_line":"                        \u0027of the original config\u0027) % {\u0027group\u0027: group}"},{"line_number":1146,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1147,"context_line":"            if group and option and not current_group.get(option):"},{"line_number":1148,"context_line":"                msg \u003d _(\u0027Trying to delete option %(option)s in group \u0027"},{"line_number":1149,"context_line":"                        \u0027%(group)s, which is not part of the original \u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_4af3730a","line":1146,"in_reply_to":"ba7be1f8_b6372de2","updated":"2015-03-04 06:11:28.000000000","message":"hmm, yes, I think you are correct","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5fa8be880be269a614e6844d7858cd047f2d428a","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"                msg \u003d _(\u0027Trying to delete option %(option)s in group \u0027"},{"line_number":1149,"context_line":"                        \u0027%(group)s, which is not part of the original \u0027"},{"line_number":1150,"context_line":"                        \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1151,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"        self.driver.delete_config_options(domain_id, group, option)"},{"line_number":1154,"context_line":"        self.driver.delete_config_options(domain_id, group, option,"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_36533d18","line":1151,"updated":"2015-03-04 03:05:44.000000000","message":"NotFound?","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"356d74f20db51908524b50cd8d7a5b10541d7be2","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"                msg \u003d _(\u0027Trying to delete option %(option)s in group \u0027"},{"line_number":1149,"context_line":"                        \u0027%(group)s, which is not part of the original \u0027"},{"line_number":1150,"context_line":"                        \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1151,"context_line":"                raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"        self.driver.delete_config_options(domain_id, group, option)"},{"line_number":1154,"context_line":"        self.driver.delete_config_options(domain_id, group, option,"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_6af837e6","line":1151,"in_reply_to":"ba7be1f8_36533d18","updated":"2015-03-04 06:11:28.000000000","message":"ditto","commit_id":"4f26c0e661e05daab0dc0c0ac2816f5cea5c8c5f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":845,"context_line":"        \"\"\""},{"line_number":846,"context_line":"        # Something must be defined in the request"},{"line_number":847,"context_line":"        if not config:"},{"line_number":848,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":849,"context_line":"                reason\u003d_(\u0027No options specified\u0027))"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        # Make sure the groups/options defined in config itself are valid"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_bfd6ddc3","line":848,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":845,"context_line":"        \"\"\""},{"line_number":846,"context_line":"        # Something must be defined in the request"},{"line_number":847,"context_line":"        if not config:"},{"line_number":848,"context_line":"            raise exception.InvalidDomainConfig("},{"line_number":849,"context_line":"                reason\u003d_(\u0027No options specified\u0027))"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"        # Make sure the groups/options defined in config itself are valid"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_4ee9b119","line":848,"in_reply_to":"9a80dd14_bfd6ddc3","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        if (group and group not in self.whitelisted_options and"},{"line_number":885,"context_line":"                group not in self.sensitive_options):"},{"line_number":886,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"},{"line_number":887,"context_line":"                    \u0027for domain specific configurations\u0027) % {\u0027group\u0027: group}"},{"line_number":888,"context_line":"            raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":889,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_5feec18c","line":886,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":883,"context_line":""},{"line_number":884,"context_line":"        if (group and group not in self.whitelisted_options and"},{"line_number":885,"context_line":"                group not in self.sensitive_options):"},{"line_number":886,"context_line":"            msg \u003d _(\u0027Group %(group)s is not supported \u0027"},{"line_number":887,"context_line":"                    \u0027for domain specific configurations\u0027) % {\u0027group\u0027: group}"},{"line_number":888,"context_line":"            raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":889,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_cecda188","line":886,"in_reply_to":"9a80dd14_5feec18c","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bba0bd3d29521a2cd6188da31db8b5cb65212c1b","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                          groups, this has already been filtered to only"},{"line_number":924,"context_line":"                          contain those options to include in the output."},{"line_number":925,"context_line":"        :param req_option: the individual option requested - which is really"},{"line_number":926,"context_line":"                           just a flag to say not to include the group key"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"        :returns: a config dict, including sensitive if specified"},{"line_number":929,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_bc40ab57","line":926,"updated":"2015-03-04 14:34:23.000000000","message":"it\u0027s not just a flag, since the value is used at line 937.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":923,"context_line":"                          groups, this has already been filtered to only"},{"line_number":924,"context_line":"                          contain those options to include in the output."},{"line_number":925,"context_line":"        :param req_option: the individual option requested - which is really"},{"line_number":926,"context_line":"                           just a flag to say not to include the group key"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"        :returns: a config dict, including sensitive if specified"},{"line_number":929,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_2ec55d5b","line":926,"in_reply_to":"9a80dd14_bc40ab57","updated":"2015-03-04 17:36:30.000000000","message":"true enough","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":940,"context_line":"                              \u0027%(option)s, expected option %(expected)s\u0027),"},{"line_number":941,"context_line":"                          {\u0027count\u0027: len(the_list), \u0027option\u0027: list[0][\u0027option\u0027],"},{"line_number":942,"context_line":"                           \u0027expected\u0027: req_option})"},{"line_number":943,"context_line":"                raise exception.UnexpectedError("},{"line_number":944,"context_line":"                    _(\u0027An unexpected error occurred when retrieving domain \u0027"},{"line_number":945,"context_line":"                      \u0027configs\u0027))"},{"line_number":946,"context_line":"            return {the_list[0][\u0027option\u0027]: the_list[0][\u0027value\u0027]}"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_df88f1c8","line":943,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested somehow, although the previous line is...","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":940,"context_line":"                              \u0027%(option)s, expected option %(expected)s\u0027),"},{"line_number":941,"context_line":"                          {\u0027count\u0027: len(the_list), \u0027option\u0027: list[0][\u0027option\u0027],"},{"line_number":942,"context_line":"                           \u0027expected\u0027: req_option})"},{"line_number":943,"context_line":"                raise exception.UnexpectedError("},{"line_number":944,"context_line":"                    _(\u0027An unexpected error occurred when retrieving domain \u0027"},{"line_number":945,"context_line":"                      \u0027configs\u0027))"},{"line_number":946,"context_line":"            return {the_list[0][\u0027option\u0027]: the_list[0][\u0027value\u0027]}"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_2e1d5dbe","line":943,"in_reply_to":"9a80dd14_df88f1c8","updated":"2015-03-04 17:36:30.000000000","message":"hmm, odd, can\u0027t explain that","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bba0bd3d29521a2cd6188da31db8b5cb65212c1b","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                    _(\u0027An unexpected error occurred when retrieving domain \u0027"},{"line_number":945,"context_line":"                      \u0027configs\u0027))"},{"line_number":946,"context_line":"            return {the_list[0][\u0027option\u0027]: the_list[0][\u0027value\u0027]}"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"        config \u003d {}"},{"line_number":949,"context_line":"        for option in the_list:"},{"line_number":950,"context_line":"            config.setdefault(option[\u0027group\u0027], {})"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_7c9ab315","line":947,"updated":"2015-03-04 14:34:23.000000000","message":"This method would be easier to understand if the req_option \u003d\u003d True case was always handled separately... the way it is now it drops through and then goes through some complicated logic that doesn\u0027t apply just to return an empty dict.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                    _(\u0027An unexpected error occurred when retrieving domain \u0027"},{"line_number":945,"context_line":"                      \u0027configs\u0027))"},{"line_number":946,"context_line":"            return {the_list[0][\u0027option\u0027]: the_list[0][\u0027value\u0027]}"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"        config \u003d {}"},{"line_number":949,"context_line":"        for option in the_list:"},{"line_number":950,"context_line":"            config.setdefault(option[\u0027group\u0027], {})"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_0efc193e","line":947,"in_reply_to":"9a80dd14_7c9ab315","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"            msg \u003d _(\u0027option %(option)s in group %(group)s\u0027) % {"},{"line_number":1020,"context_line":"                \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1021,"context_line":"        elif group:"},{"line_number":1022,"context_line":"            msg \u003d _(\u0027group %(group)s\u0027) % {\u0027group\u0027: group}"},{"line_number":1023,"context_line":"        else:"},{"line_number":1024,"context_line":"            msg \u003d _(\u0027any options\u0027)"},{"line_number":1025,"context_line":"        raise exception.DomainConfigNotFound("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_7fc1c5e3","line":1022,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1019,"context_line":"            msg \u003d _(\u0027option %(option)s in group %(group)s\u0027) % {"},{"line_number":1020,"context_line":"                \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1021,"context_line":"        elif group:"},{"line_number":1022,"context_line":"            msg \u003d _(\u0027group %(group)s\u0027) % {\u0027group\u0027: group}"},{"line_number":1023,"context_line":"        else:"},{"line_number":1024,"context_line":"            msg \u003d _(\u0027any options\u0027)"},{"line_number":1025,"context_line":"        raise exception.DomainConfigNotFound("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_82b61ddb","line":1022,"in_reply_to":"9a80dd14_7fc1c5e3","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"        elif group:"},{"line_number":1022,"context_line":"            msg \u003d _(\u0027group %(group)s\u0027) % {\u0027group\u0027: group}"},{"line_number":1023,"context_line":"        else:"},{"line_number":1024,"context_line":"            msg \u003d _(\u0027any options\u0027)"},{"line_number":1025,"context_line":"        raise exception.DomainConfigNotFound("},{"line_number":1026,"context_line":"            domain_id\u003ddomain_id, group_or_option\u003dmsg)"},{"line_number":1027,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_9fb67989","line":1024,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"        elif group:"},{"line_number":1022,"context_line":"            msg \u003d _(\u0027group %(group)s\u0027) % {\u0027group\u0027: group}"},{"line_number":1023,"context_line":"        else:"},{"line_number":1024,"context_line":"            msg \u003d _(\u0027any options\u0027)"},{"line_number":1025,"context_line":"        raise exception.DomainConfigNotFound("},{"line_number":1026,"context_line":"            domain_id\u003ddomain_id, group_or_option\u003dmsg)"},{"line_number":1027,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_c2b015e0","line":1024,"in_reply_to":"9a80dd14_9fb67989","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bba0bd3d29521a2cd6188da31db8b5cb65212c1b","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"                support or one that does not exist in the original config"},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"        \"\"\""},{"line_number":1051,"context_line":"        def _assert_valid_update(domain_id, config, group\u003dNone, option\u003dNone,"},{"line_number":1052,"context_line":"                                 original_config\u003dNone):"},{"line_number":1053,"context_line":"            \"\"\"Ensure the combination of config, group and option is valid.\"\"\""},{"line_number":1054,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_df71d178","line":1051,"updated":"2015-03-04 14:34:23.000000000","message":"domain_id isn\u0027t used.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"                support or one that does not exist in the original config"},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":"        \"\"\""},{"line_number":1051,"context_line":"        def _assert_valid_update(domain_id, config, group\u003dNone, option\u003dNone,"},{"line_number":1052,"context_line":"                                 original_config\u003dNone):"},{"line_number":1053,"context_line":"            \"\"\"Ensure the combination of config, group and option is valid.\"\"\""},{"line_number":1054,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_62ef69b1","line":1051,"in_reply_to":"9a80dd14_df71d178","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bba0bd3d29521a2cd6188da31db8b5cb65212c1b","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"            self._assert_valid_group_and_option(group, option)"},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"            # If there is a group or option, then there should be only one"},{"line_number":1059,"context_line":"            # entry in the config"},{"line_number":1060,"context_line":"            if group and len(config) !\u003d 1:"},{"line_number":1061,"context_line":"                if not option:"},{"line_number":1062,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, so that, and \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_3f002daa","line":1059,"updated":"2015-03-04 14:34:23.000000000","message":"this says what the next line of code is doing, but it should say why it\u0027s doing it... why must there only be one entry in the config?","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"            self._assert_valid_group_and_option(group, option)"},{"line_number":1057,"context_line":""},{"line_number":1058,"context_line":"            # If there is a group or option, then there should be only one"},{"line_number":1059,"context_line":"            # entry in the config"},{"line_number":1060,"context_line":"            if group and len(config) !\u003d 1:"},{"line_number":1061,"context_line":"                if not option:"},{"line_number":1062,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, so that, and \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_25f65bd8","line":1059,"in_reply_to":"9a80dd14_3f002daa","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"                            \u0027%(option)s, but that, and only that, option must \u0027"},{"line_number":1068,"context_line":"                            \u0027be specified  in the config\u0027) % {"},{"line_number":1069,"context_line":"                                \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1070,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"            if group:"},{"line_number":1073,"context_line":"                # Make sure the items specified for update in the new config"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_9f6d9907","line":1070,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"                            \u0027%(option)s, but that, and only that, option must \u0027"},{"line_number":1068,"context_line":"                            \u0027be specified  in the config\u0027) % {"},{"line_number":1069,"context_line":"                                \u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1070,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"            if group:"},{"line_number":1073,"context_line":"                # Make sure the items specified for update in the new config"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_58d8921d","line":1070,"in_reply_to":"9a80dd14_9f6d9907","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bba0bd3d29521a2cd6188da31db8b5cb65212c1b","unresolved":false,"context_lines":[{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"            if group:"},{"line_number":1073,"context_line":"                # Make sure the items specified for update in the new config"},{"line_number":1074,"context_line":"                # exist in the current original config"},{"line_number":1075,"context_line":"                original_group \u003d original_config.get(group)"},{"line_number":1076,"context_line":"                if not original_group:"},{"line_number":1077,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, which is not \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_9f267967","line":1074,"updated":"2015-03-04 14:34:23.000000000","message":"should say why.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"            if group:"},{"line_number":1073,"context_line":"                # Make sure the items specified for update in the new config"},{"line_number":1074,"context_line":"                # exist in the current original config"},{"line_number":1075,"context_line":"                original_group \u003d original_config.get(group)"},{"line_number":1076,"context_line":"                if not original_group:"},{"line_number":1077,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s, which is not \u0027"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_e52b632e","line":1074,"in_reply_to":"9a80dd14_9f267967","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":1082,"context_line":"                            \u0027%(option)s, which is not part of the original \u0027"},{"line_number":1083,"context_line":"                            \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1084,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        def _update_or_create(domain_id, option, sensitive):"},{"line_number":1087,"context_line":"            \"\"\"Update the option, if it doesn\u0027t exist then create it.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_1f81a98f","line":1084,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"                    msg \u003d _(\u0027Trying to update group %(group)s and option \u0027"},{"line_number":1082,"context_line":"                            \u0027%(option)s, which is not part of the original \u0027"},{"line_number":1083,"context_line":"                            \u0027config\u0027) % {\u0027group\u0027: group, \u0027option\u0027: option}"},{"line_number":1084,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        def _update_or_create(domain_id, option, sensitive):"},{"line_number":1087,"context_line":"            \"\"\"Update the option, if it doesn\u0027t exist then create it.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_b8834ecb","line":1084,"in_reply_to":"9a80dd14_1f81a98f","updated":"2015-03-04 17:36:30.000000000","message":"I have modified this block of code, but provided tests for the new code","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a294e095d6eae1422504bf41bc67dc0581cf32be","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        if group:"},{"line_number":1136,"context_line":"            # As this is a partial delete, then make sure the items requested"},{"line_number":1137,"context_line":"            # are valid and exist in the current config"},{"line_number":1138,"context_line":"            current_config \u003d self.get_config_with_sensitive_info(domain_id)"},{"line_number":1139,"context_line":"            # Raise an exception if the items in the new config don\u0027t exist in"},{"line_number":1140,"context_line":"            # the current config so that update and delete methods provide the"},{"line_number":1141,"context_line":"            # correct error semantics."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_3f558d1d","line":1138,"updated":"2015-03-04 14:40:10.000000000","message":"coverage report shows this isn\u0027t tested.","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"01dbe74aafc970bf820d1e48bde539cbc97a862b","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"        if group:"},{"line_number":1136,"context_line":"            # As this is a partial delete, then make sure the items requested"},{"line_number":1137,"context_line":"            # are valid and exist in the current config"},{"line_number":1138,"context_line":"            current_config \u003d self.get_config_with_sensitive_info(domain_id)"},{"line_number":1139,"context_line":"            # Raise an exception if the items in the new config don\u0027t exist in"},{"line_number":1140,"context_line":"            # the current config so that update and delete methods provide the"},{"line_number":1141,"context_line":"            # correct error semantics."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_369f6f61","line":1138,"in_reply_to":"9a80dd14_3f558d1d","updated":"2015-03-04 17:36:30.000000000","message":"Done","commit_id":"21d1d73654a6c2f31bdf91a21a9210afbe1d99e7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f79abc7c00bbc79410727c9c5b68564a748199c","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        :returns: a config dict, including sensitive if specified"},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"        \"\"\""},{"line_number":930,"context_line":"        the_list \u003d copy.copy(whitelisted) + (sensitive or [])"},{"line_number":931,"context_line":"        if not the_list:"},{"line_number":932,"context_line":"            return {}"},{"line_number":933,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_a3a15eab","line":930,"updated":"2015-03-04 19:24:30.000000000","message":"copy.copy() isn\u0027t needed since + makes a copy.","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6df5add97471c65ccfa1bb6ed610567834af3e50","unresolved":false,"context_lines":[{"line_number":927,"context_line":"        :returns: a config dict, including sensitive if specified"},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"        \"\"\""},{"line_number":930,"context_line":"        the_list \u003d copy.copy(whitelisted) + (sensitive or [])"},{"line_number":931,"context_line":"        if not the_list:"},{"line_number":932,"context_line":"            return {}"},{"line_number":933,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_72580a57","line":930,"in_reply_to":"9a80dd14_a3a15eab","updated":"2015-03-04 21:27:30.000000000","message":"Done","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f79abc7c00bbc79410727c9c5b68564a748199c","unresolved":false,"context_lines":[{"line_number":973,"context_line":"        self._assert_valid_config(config)"},{"line_number":974,"context_line":"        whitelisted, sensitive \u003d self._config_to_list(config)"},{"line_number":975,"context_line":"        # Delete any existing config"},{"line_number":976,"context_line":"        self.driver.delete_config_options(domain_id)"},{"line_number":977,"context_line":"        self.driver.delete_config_options(domain_id, sensitive\u003dTrue)"},{"line_number":978,"context_line":"        # ...and create the new one"},{"line_number":979,"context_line":"        for option in whitelisted:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_8369ba8d","line":976,"updated":"2015-03-04 19:24:30.000000000","message":"\".driver\" isn\u0027t needed here, so remove it. This applies throughout these changes.","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6df5add97471c65ccfa1bb6ed610567834af3e50","unresolved":false,"context_lines":[{"line_number":973,"context_line":"        self._assert_valid_config(config)"},{"line_number":974,"context_line":"        whitelisted, sensitive \u003d self._config_to_list(config)"},{"line_number":975,"context_line":"        # Delete any existing config"},{"line_number":976,"context_line":"        self.driver.delete_config_options(domain_id)"},{"line_number":977,"context_line":"        self.driver.delete_config_options(domain_id, sensitive\u003dTrue)"},{"line_number":978,"context_line":"        # ...and create the new one"},{"line_number":979,"context_line":"        for option in whitelisted:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_7d1d3b66","line":976,"in_reply_to":"9a80dd14_8369ba8d","updated":"2015-03-04 21:27:30.000000000","message":"Done","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f79abc7c00bbc79410727c9c5b68564a748199c","unresolved":false,"context_lines":[{"line_number":1000,"context_line":"                and group/option parameters specify an option we do not"},{"line_number":1001,"context_line":"                support"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        An example response:"},{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"        {"},{"line_number":1006,"context_line":"            \u0027ldap\u0027: {"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_a3d31e37","line":1003,"updated":"2015-03-04 19:24:30.000000000","message":"add another : for rst","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6df5add97471c65ccfa1bb6ed610567834af3e50","unresolved":false,"context_lines":[{"line_number":1000,"context_line":"                and group/option parameters specify an option we do not"},{"line_number":1001,"context_line":"                support"},{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        An example response:"},{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"        {"},{"line_number":1006,"context_line":"            \u0027ldap\u0027: {"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_fdca0ba0","line":1003,"in_reply_to":"9a80dd14_a3d31e37","updated":"2015-03-04 21:27:30.000000000","message":"Done","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f79abc7c00bbc79410727c9c5b68564a748199c","unresolved":false,"context_lines":[{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        An example response:"},{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"        {"},{"line_number":1006,"context_line":"            \u0027ldap\u0027: {"},{"line_number":1007,"context_line":"                \u0027url\u0027: \u0027myurl\u0027"},{"line_number":1008,"context_line":"                \u0027user_tree_dn\u0027: \u0027OU\u003dmyou\u0027},"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_03e30a08","line":1005,"updated":"2015-03-04 19:24:30.000000000","message":"indent these lines for rst","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6df5add97471c65ccfa1bb6ed610567834af3e50","unresolved":false,"context_lines":[{"line_number":1002,"context_line":""},{"line_number":1003,"context_line":"        An example response:"},{"line_number":1004,"context_line":""},{"line_number":1005,"context_line":"        {"},{"line_number":1006,"context_line":"            \u0027ldap\u0027: {"},{"line_number":1007,"context_line":"                \u0027url\u0027: \u0027myurl\u0027"},{"line_number":1008,"context_line":"                \u0027user_tree_dn\u0027: \u0027OU\u003dmyou\u0027},"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_1dd0bf4f","line":1005,"in_reply_to":"9a80dd14_03e30a08","updated":"2015-03-04 21:27:30.000000000","message":"Done","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1f79abc7c00bbc79410727c9c5b68564a748199c","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                            \u0027%(group)s, but config provided contains option \u0027"},{"line_number":1090,"context_line":"                            \u0027%(option_other)s instead\u0027) % {"},{"line_number":1091,"context_line":"                                \u0027group\u0027: group,"},{"line_number":1092,"context_line":"                                \u0027option_other\u0027: config[group].keys()[0]}"},{"line_number":1093,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        def _update_or_create(domain_id, option, sensitive):"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_87654747","line":1092,"updated":"2015-03-04 19:24:30.000000000","message":"the message has %(option)s, but there\u0027s no \u0027option\u0027 in the dict.\n\nAlso, this isn\u0027t tested according to coverage report.","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6df5add97471c65ccfa1bb6ed610567834af3e50","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                            \u0027%(group)s, but config provided contains option \u0027"},{"line_number":1090,"context_line":"                            \u0027%(option_other)s instead\u0027) % {"},{"line_number":1091,"context_line":"                                \u0027group\u0027: group,"},{"line_number":1092,"context_line":"                                \u0027option_other\u0027: config[group].keys()[0]}"},{"line_number":1093,"context_line":"                    raise exception.InvalidDomainConfig(reason\u003dmsg)"},{"line_number":1094,"context_line":""},{"line_number":1095,"context_line":"        def _update_or_create(domain_id, option, sensitive):"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a80dd14_7dbe1b01","line":1092,"in_reply_to":"9a80dd14_87654747","updated":"2015-03-04 21:27:30.000000000","message":"Done","commit_id":"8d1bc9b94f71b7f133c51a0d6fac55f8ef72b9cd"}]}
