)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"domain specific configurations to the database version, we"},{"line_number":11,"context_line":"support a domain_config_upload option in keystone-manage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially Implements: blueprint domain-config-ext"},{"line_number":14,"context_line":"Change-Id: I0ce8d063d9e9f6fe95965d0ed18e825e2ad80ee4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a80dd14_62bb0ac4","line":13,"updated":"2015-03-16 15:06:14.000000000","message":"where does \"Partially Implements\" come from? https://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"83ffdbbc08884e2a62b24586de0c3ce3036b2bcc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"domain specific configurations to the database version, we"},{"line_number":11,"context_line":"support a domain_config_upload option in keystone-manage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially Implements: blueprint domain-config-ext"},{"line_number":14,"context_line":"Change-Id: I0ce8d063d9e9f6fe95965d0ed18e825e2ad80ee4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a80dd14_79fc9c72","line":13,"in_reply_to":"9a80dd14_62bb0ac4","updated":"2015-03-16 15:22:50.000000000","message":"technically you can put whatever you want before `blueprint xyz`\ni\u0027ve seen others use partially in the case where the bp implementation is broken up into several patches","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"domain specific configurations to the database version, we"},{"line_number":11,"context_line":"support a domain_config_upload option in keystone-manage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Partially Implements: blueprint domain-config-ext"},{"line_number":14,"context_line":"Change-Id: I0ce8d063d9e9f6fe95965d0ed18e825e2ad80ee4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a80dd14_3724c40d","line":13,"in_reply_to":"9a80dd14_79fc9c72","updated":"2015-03-17 10:24:27.000000000","message":"yes, I copied for others.....happy to take it out if we think it is more confusing...","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"}],"keystone/cli.py":[{"author":{"_account_id":11387,"name":"Sam Leong","email":"chio-fai-sam.leong@hpe.com","username":"Chioleong"},"change_message_id":"eb7ccf6bc132a563829f5d63a256fb05ddee95b6","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                                      file_name, domain_name):"},{"line_number":362,"context_line":"            try:"},{"line_number":363,"context_line":"                domain_ref \u003d ("},{"line_number":364,"context_line":"                    resource_manager.driver.get_domain_by_name(domain_name))"},{"line_number":365,"context_line":"            except exception.DomainNotFound:"},{"line_number":366,"context_line":"                LOG.warning("},{"line_number":367,"context_line":"                    _LW(\u0027Invalid domain name (%s) found in config file name\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_1b18eb83","line":364,"updated":"2015-03-04 08:19:16.000000000","message":"Do we need to validate if domain is enable?","commit_id":"5cfbe18deaacbb186c30faf7234720b8318d39be"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"428a8ed71ee5e1704ced66a6245ea735a1e2a284","unresolved":false,"context_lines":[{"line_number":361,"context_line":"                                      file_name, domain_name):"},{"line_number":362,"context_line":"            try:"},{"line_number":363,"context_line":"                domain_ref \u003d ("},{"line_number":364,"context_line":"                    resource_manager.driver.get_domain_by_name(domain_name))"},{"line_number":365,"context_line":"            except exception.DomainNotFound:"},{"line_number":366,"context_line":"                LOG.warning("},{"line_number":367,"context_line":"                    _LW(\u0027Invalid domain name (%s) found in config file name\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_bc0fd52d","line":364,"in_reply_to":"9a80dd14_1b18eb83","updated":"2015-03-04 09:24:15.000000000","message":"I don\u0027t think so.  In fact, I can imagine quite a common scenario would be to create a domain marked as disabled, then work to set everything up about it (e.g. the right configs)...and then throw the switch to enable it.","commit_id":"5cfbe18deaacbb186c30faf7234720b8318d39be"},{"author":{"_account_id":11387,"name":"Sam Leong","email":"chio-fai-sam.leong@hpe.com","username":"Chioleong"},"change_message_id":"eb7ccf6bc132a563829f5d63a256fb05ddee95b6","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                return"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"            # Request is to transfer all config files, so let\u0027s read all the"},{"line_number":402,"context_line":"            # files in the config direction, and transfer those that match the"},{"line_number":403,"context_line":"            # filename pattern of \u0027keystone.\u003cdomain_name\u003e.conf\u0027"},{"line_number":404,"context_line":"            for r, d, f in os.walk(conf_dir):"},{"line_number":405,"context_line":"                for fname in f:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_7b172752","line":402,"updated":"2015-03-04 08:19:16.000000000","message":"directory?","commit_id":"5cfbe18deaacbb186c30faf7234720b8318d39be"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"428a8ed71ee5e1704ced66a6245ea735a1e2a284","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                return"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"            # Request is to transfer all config files, so let\u0027s read all the"},{"line_number":402,"context_line":"            # files in the config direction, and transfer those that match the"},{"line_number":403,"context_line":"            # filename pattern of \u0027keystone.\u003cdomain_name\u003e.conf\u0027"},{"line_number":404,"context_line":"            for r, d, f in os.walk(conf_dir):"},{"line_number":405,"context_line":"                for fname in f:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_1c2621bb","line":402,"in_reply_to":"9a80dd14_7b172752","updated":"2015-03-04 09:24:15.000000000","message":"Done","commit_id":"5cfbe18deaacbb186c30faf7234720b8318d39be"},{"author":{"_account_id":11387,"name":"Sam Leong","email":"chio-fai-sam.leong@hpe.com","username":"Chioleong"},"change_message_id":"eb7ccf6bc132a563829f5d63a256fb05ddee95b6","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                                         \u0027domain config directory\u0027), fname)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        validate_options()"},{"line_number":419,"context_line":"        read_domain_configs_from_files(CONF.command.domain_name)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"class SamlIdentityProviderMetadata(BaseApp):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_363ce693","line":419,"updated":"2015-03-04 08:19:16.000000000","message":"It might be more consistent to have both domain_name and domain_config_dir as the parameters","commit_id":"5cfbe18deaacbb186c30faf7234720b8318d39be"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"428a8ed71ee5e1704ced66a6245ea735a1e2a284","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                                         \u0027domain config directory\u0027), fname)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        validate_options()"},{"line_number":419,"context_line":"        read_domain_configs_from_files(CONF.command.domain_name)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"class SamlIdentityProviderMetadata(BaseApp):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_fc16adf0","line":419,"in_reply_to":"9a80dd14_363ce693","updated":"2015-03-04 09:24:15.000000000","message":"At first glance you might think that, but I think that it is better to keep the processing of command line params (i.e. CONF.command.domain_name) outside of read_domain_configs_from_files, while the processing of regular values in the config (i.e. CONF.identity.domain_config_dir) within it.","commit_id":"5cfbe18deaacbb186c30faf7234720b8318d39be"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"1c1808958aa8cac990ba7505bed449fc0ab819f8","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                raise ValueError(_(\u0027--all option cannot be mixed with \u0027"},{"line_number":358,"context_line":"                                   \u0027the domain-name option\u0027))"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        def upload_config_to_database(resource_manager, domain_config_manager,"},{"line_number":361,"context_line":"                                      file_name, domain_name):"},{"line_number":362,"context_line":"            try:"},{"line_number":363,"context_line":"                domain_ref \u003d ("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_ac91ddf2","line":360,"updated":"2015-03-06 16:01:43.000000000","message":"Why do you need to receive resource_manager and domain_config_manager parameters? Is not possible just to instantiate them inside the function? or use Singleton pattern to get those objects?","commit_id":"8d835a6ea77d82339baa8d0df8062c843454efb6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6b27fba92d5d53abf7ed9ab22496a528ca420493","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                raise ValueError(_(\u0027--all option cannot be mixed with \u0027"},{"line_number":358,"context_line":"                                   \u0027the domain-name option\u0027))"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        def upload_config_to_database(resource_manager, domain_config_manager,"},{"line_number":361,"context_line":"                                      file_name, domain_name):"},{"line_number":362,"context_line":"            try:"},{"line_number":363,"context_line":"                domain_ref \u003d ("}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_bf58f98a","line":360,"in_reply_to":"9a80dd14_ac91ddf2","updated":"2015-03-08 20:35:05.000000000","message":"just to save re-creating it each time we get called in the loop below..","commit_id":"8d835a6ea77d82339baa8d0df8062c843454efb6"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"1c1808958aa8cac990ba7505bed449fc0ab819f8","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            for group in sections:"},{"line_number":377,"context_line":"                for option in sections[group]:"},{"line_number":378,"context_line":"                        sections[group][option] \u003d sections[group][option][0]"},{"line_number":379,"context_line":"            domain_config_manager.create_config(domain_ref[\u0027id\u0027], sections)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        def read_domain_configs_from_files(domain_name):"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_0c2029ab","line":379,"updated":"2015-03-06 16:01:43.000000000","message":"What happens if the domain was already imported (in some previous keystone-manage execution)? \nShould we check if the domain is already in the database?","commit_id":"8d835a6ea77d82339baa8d0df8062c843454efb6"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"6b27fba92d5d53abf7ed9ab22496a528ca420493","unresolved":false,"context_lines":[{"line_number":376,"context_line":"            for group in sections:"},{"line_number":377,"context_line":"                for option in sections[group]:"},{"line_number":378,"context_line":"                        sections[group][option] \u003d sections[group][option][0]"},{"line_number":379,"context_line":"            domain_config_manager.create_config(domain_ref[\u0027id\u0027], sections)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        def read_domain_configs_from_files(domain_name):"},{"line_number":382,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_1f53c56b","line":379,"in_reply_to":"9a80dd14_0c2029ab","updated":"2015-03-08 20:35:05.000000000","message":"I think that\u0027s a valid point - and in fact I think we should NOT overwrite an existing config - this upload is meant to be for migration only","commit_id":"8d835a6ea77d82339baa8d0df8062c843454efb6"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fd669888bbf765c1f7228823c98b687a5b77db2c","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"DOMAIN_CONF_FHEAD \u003d \u0027keystone.\u0027"},{"line_number":322,"context_line":"DOMAIN_CONF_FTAIL \u003d \u0027.conf\u0027"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_c190dc98","line":322,"updated":"2015-03-11 21:48:03.000000000","message":"Should there be a period in both?","commit_id":"2a2b7b0fc16dc43defb54b3914be84b381e47a60"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c18dbd72e0a56149529663d8d7656ab5ebda6898","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"DOMAIN_CONF_FHEAD \u003d \u0027keystone.\u0027"},{"line_number":322,"context_line":"DOMAIN_CONF_FTAIL \u003d \u0027.conf\u0027"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_30501c0a","line":322,"in_reply_to":"9a80dd14_c190dc98","updated":"2015-03-12 00:00:47.000000000","message":"yes...because the domain name gets put between them!","commit_id":"2a2b7b0fc16dc43defb54b3914be84b381e47a60"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fd669888bbf765c1f7228823c98b687a5b77db2c","unresolved":false,"context_lines":[{"line_number":341,"context_line":"    @staticmethod"},{"line_number":342,"context_line":"    def main():"},{"line_number":343,"context_line":"        def validate_options():"},{"line_number":344,"context_line":"            # NOTE(henry-nash); It would be nice to use the argparse automated"},{"line_number":345,"context_line":"            # checking for this validation, but the only way I can see doing"},{"line_number":346,"context_line":"            # that is to make the default (i.e. if no optional parameters"},{"line_number":347,"context_line":"            # are specified) to upload all configuration files - and that"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_21d0d852","line":344,"updated":"2015-03-11 21:48:03.000000000","message":":*","commit_id":"2a2b7b0fc16dc43defb54b3914be84b381e47a60"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"c18dbd72e0a56149529663d8d7656ab5ebda6898","unresolved":false,"context_lines":[{"line_number":341,"context_line":"    @staticmethod"},{"line_number":342,"context_line":"    def main():"},{"line_number":343,"context_line":"        def validate_options():"},{"line_number":344,"context_line":"            # NOTE(henry-nash); It would be nice to use the argparse automated"},{"line_number":345,"context_line":"            # checking for this validation, but the only way I can see doing"},{"line_number":346,"context_line":"            # that is to make the default (i.e. if no optional parameters"},{"line_number":347,"context_line":"            # are specified) to upload all configuration files - and that"}],"source_content_type":"text/x-python","patch_set":18,"id":"9a80dd14_705a942b","line":344,"in_reply_to":"9a80dd14_21d0d852","updated":"2015-03-12 00:00:47.000000000","message":"Done","commit_id":"2a2b7b0fc16dc43defb54b3914be84b381e47a60"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"DOMAIN_CONF_FHEAD \u003d \u0027keystone.\u0027"},{"line_number":324,"context_line":"DOMAIN_CONF_FTAIL \u003d \u0027.conf\u0027"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_42060687","line":324,"updated":"2015-03-16 15:06:14.000000000","message":"suggest use a regex instead.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"DOMAIN_CONF_FHEAD \u003d \u0027keystone.\u0027"},{"line_number":324,"context_line":"DOMAIN_CONF_FTAIL \u003d \u0027.conf\u0027"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_69b7453b","line":324,"in_reply_to":"9a80dd14_42060687","updated":"2015-03-17 10:24:27.000000000","message":"certainly could do, but I\u0027d like to use the same algorithm as used by the identity manager for clarity.  And yes, it might be a good enhancement to break out that algorithm and share the code between these two places - I\u0027d suggest we do that as a follow on patch.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":333,"context_line":"    def add_argument_parser(cls, subparsers):"},{"line_number":334,"context_line":"        parser \u003d super(DomainConfigUpload, cls).add_argument_parser(subparsers)"},{"line_number":335,"context_line":"        parser.add_argument(\u0027--all\u0027, default\u003dFalse, action\u003d\u0027store_true\u0027,"},{"line_number":336,"context_line":"                            help\u003d(\u0027Upload contents of all domain specific \u0027"},{"line_number":337,"context_line":"                                  \u0027configuration files.\u0027))"},{"line_number":338,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":339,"context_line":"                            help\u003d(\u0027Upload contents of the specific \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_424c469e","line":336,"updated":"2015-03-16 15:06:14.000000000","message":"extra () not required.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":333,"context_line":"    def add_argument_parser(cls, subparsers):"},{"line_number":334,"context_line":"        parser \u003d super(DomainConfigUpload, cls).add_argument_parser(subparsers)"},{"line_number":335,"context_line":"        parser.add_argument(\u0027--all\u0027, default\u003dFalse, action\u003d\u0027store_true\u0027,"},{"line_number":336,"context_line":"                            help\u003d(\u0027Upload contents of all domain specific \u0027"},{"line_number":337,"context_line":"                                  \u0027configuration files.\u0027))"},{"line_number":338,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":339,"context_line":"                            help\u003d(\u0027Upload contents of the specific \u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_e658c48c","line":336,"in_reply_to":"9a80dd14_424c469e","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                            help\u003d(\u0027Upload contents of all domain specific \u0027"},{"line_number":337,"context_line":"                                  \u0027configuration files.\u0027))"},{"line_number":338,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":339,"context_line":"                            help\u003d(\u0027Upload contents of the specific \u0027"},{"line_number":340,"context_line":"                                  \u0027configuration file for the given domain.\u0027))"},{"line_number":341,"context_line":"        return parser"},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_624f8a92","line":339,"updated":"2015-03-16 15:06:14.000000000","message":"extra () not required.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":336,"context_line":"                            help\u003d(\u0027Upload contents of all domain specific \u0027"},{"line_number":337,"context_line":"                                  \u0027configuration files.\u0027))"},{"line_number":338,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":339,"context_line":"                            help\u003d(\u0027Upload contents of the specific \u0027"},{"line_number":340,"context_line":"                                  \u0027configuration file for the given domain.\u0027))"},{"line_number":341,"context_line":"        return parser"},{"line_number":342,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_065eb876","line":339,"in_reply_to":"9a80dd14_624f8a92","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":352,"context_line":"            # must specify at least one."},{"line_number":353,"context_line":"            if (CONF.command.all is False and"},{"line_number":354,"context_line":"                    CONF.command.domain_name is None):"},{"line_number":355,"context_line":"                raise ValueError(_(\u0027At least one option must be provided\u0027))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"            if (CONF.command.all is True and"},{"line_number":358,"context_line":"                    CONF.command.domain_name is not None):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_421a867d","line":355,"updated":"2015-03-16 15:06:14.000000000","message":"The output of this includes the entire traceback. The application should catch this and print out a nicely formatted message.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":352,"context_line":"            # must specify at least one."},{"line_number":353,"context_line":"            if (CONF.command.all is False and"},{"line_number":354,"context_line":"                    CONF.command.domain_name is None):"},{"line_number":355,"context_line":"                raise ValueError(_(\u0027At least one option must be provided\u0027))"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"            if (CONF.command.all is True and"},{"line_number":358,"context_line":"                    CONF.command.domain_name is not None):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_e9c895aa","line":355,"in_reply_to":"9a80dd14_421a867d","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                raise ValueError(_(\u0027Unable to locate domain config \u0027"},{"line_number":396,"context_line":"                                   \u0027directory: %s\u0027), conf_dir)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_96583f32","line":398,"updated":"2015-03-16 15:06:14.000000000","message":"Add a comment why this is here.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                raise ValueError(_(\u0027Unable to locate domain config \u0027"},{"line_number":396,"context_line":"                                   \u0027directory: %s\u0027), conf_dir)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_06ecf88e","line":398,"in_reply_to":"9a80dd14_6fc84ea8","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"40644f5c08b918d313c74c98b3c66641a12955e1","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                raise ValueError(_(\u0027Unable to locate domain config \u0027"},{"line_number":396,"context_line":"                                   \u0027directory: %s\u0027), conf_dir)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_6fc84ea8","line":398,"in_reply_to":"9a80dd14_96583f32","updated":"2015-03-16 16:02:20.000000000","message":"++ someone else recently did this as well. \n\nhttps://review.openstack.org/#/c/161543/5/keystone/cli.py","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                raise ValueError(_(\u0027Unable to locate domain config \u0027"},{"line_number":396,"context_line":"                                   \u0027directory: %s\u0027), conf_dir)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_e6e604b0","line":398,"in_reply_to":"9a80dd14_96583f32","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                                   \u0027directory: %s\u0027), conf_dir)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"},{"line_number":402,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_f6489b5d","line":399,"updated":"2015-03-16 15:06:14.000000000","message":"Add a comment why this is here.","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":396,"context_line":"                                   \u0027directory: %s\u0027), conf_dir)"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"},{"line_number":402,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_26001c35","line":399,"in_reply_to":"9a80dd14_f6489b5d","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"77053f2dbafe77163f32dacc223b108279f2036e","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"            if domain_name:"},{"line_number":404,"context_line":"                # Request is to upload the configs for just one domain"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_d61c7715","line":401,"updated":"2015-03-16 15:06:14.000000000","message":"suggest put these lines into a function (load_backends())","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"68fa477cad43d812ef0abedaf5212745fad2d91b","unresolved":false,"context_lines":[{"line_number":398,"context_line":"            identity.Manager()"},{"line_number":399,"context_line":"            assignment.Manager()"},{"line_number":400,"context_line":"            resource_manager \u003d resource.Manager()"},{"line_number":401,"context_line":"            domain_config_manager \u003d resource.DomainConfigManager()"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"            if domain_name:"},{"line_number":404,"context_line":"                # Request is to upload the configs for just one domain"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a80dd14_a6ec0c94","line":401,"in_reply_to":"9a80dd14_d61c7715","updated":"2015-03-17 10:24:27.000000000","message":"Done","commit_id":"dc10c0c8ce50bea2babf3e533aa850eef0253a9e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        parser \u003d super(DomainConfigUpload, cls).add_argument_parser(subparsers)"},{"line_number":336,"context_line":"        parser.add_argument(\u0027--all\u0027, default\u003dFalse, action\u003d\u0027store_true\u0027,"},{"line_number":337,"context_line":"                            help\u003d\u0027Upload contents of all domain specific \u0027"},{"line_number":338,"context_line":"                                 \u0027configuration files.\u0027)"},{"line_number":339,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":340,"context_line":"                            help\u003d\u0027Upload contents of the specific \u0027"},{"line_number":341,"context_line":"                                 \u0027configuration file for the given domain.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_113fc3b6","line":338,"updated":"2015-03-17 14:23:38.000000000","message":"The help text should say that either this or --domain-name must be specified.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        parser \u003d super(DomainConfigUpload, cls).add_argument_parser(subparsers)"},{"line_number":336,"context_line":"        parser.add_argument(\u0027--all\u0027, default\u003dFalse, action\u003d\u0027store_true\u0027,"},{"line_number":337,"context_line":"                            help\u003d\u0027Upload contents of all domain specific \u0027"},{"line_number":338,"context_line":"                                 \u0027configuration files.\u0027)"},{"line_number":339,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":340,"context_line":"                            help\u003d\u0027Upload contents of the specific \u0027"},{"line_number":341,"context_line":"                                 \u0027configuration file for the given domain.\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_128fb276","line":338,"in_reply_to":"9a80dd14_113fc3b6","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                                 \u0027configuration files.\u0027)"},{"line_number":339,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":340,"context_line":"                            help\u003d\u0027Upload contents of the specific \u0027"},{"line_number":341,"context_line":"                                 \u0027configuration file for the given domain.\u0027)"},{"line_number":342,"context_line":"        return parser"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_71463f51","line":341,"updated":"2015-03-17 14:23:38.000000000","message":"The help text should say that either this or --all must be specified.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":338,"context_line":"                                 \u0027configuration files.\u0027)"},{"line_number":339,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":340,"context_line":"                            help\u003d\u0027Upload contents of the specific \u0027"},{"line_number":341,"context_line":"                                 \u0027configuration file for the given domain.\u0027)"},{"line_number":342,"context_line":"        return parser"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_cca4960a","line":341,"in_reply_to":"9a80dd14_71463f51","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":342,"context_line":"        return parser"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @staticmethod"},{"line_number":345,"context_line":"    def main():"},{"line_number":346,"context_line":"        def valid_options():"},{"line_number":347,"context_line":"            \"\"\"Validate the options, returning True if they are indeed valid."},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_b64d0d9c","line":345,"updated":"2015-03-17 14:23:38.000000000","message":"this function has enough sub-functions that a regular class should be made...\n\n dcu \u003d DomainConfigUpload()\n dcu.run()\n\nand then put all the functions in here into regular methods, and then resource_manager and domain_config_manager can be properties.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            \"\"\""},{"line_number":357,"context_line":"            if (CONF.command.all is False and"},{"line_number":358,"context_line":"                    CONF.command.domain_name is None):"},{"line_number":359,"context_line":"                print(_(\u0027At least one option must be provided\u0027))"},{"line_number":360,"context_line":"                return False"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"            if (CONF.command.all is True and"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_f1714fa9","line":359,"updated":"2015-03-17 14:23:38.000000000","message":"this should say what the options are, or also print the help text.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            \"\"\""},{"line_number":357,"context_line":"            if (CONF.command.all is False and"},{"line_number":358,"context_line":"                    CONF.command.domain_name is None):"},{"line_number":359,"context_line":"                print(_(\u0027At least one option must be provided\u0027))"},{"line_number":360,"context_line":"                return False"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"            if (CONF.command.all is True and"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_5225aaac","line":359,"in_reply_to":"9a80dd14_f1714fa9","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            if (CONF.command.all is False and"},{"line_number":358,"context_line":"                    CONF.command.domain_name is None):"},{"line_number":359,"context_line":"                print(_(\u0027At least one option must be provided\u0027))"},{"line_number":360,"context_line":"                return False"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"            if (CONF.command.all is True and"},{"line_number":363,"context_line":"                    CONF.command.domain_name is not None):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_16497932","line":360,"updated":"2015-03-17 14:23:38.000000000","message":"suggest raise an exception so that the caller doesn\u0027t have to be trusted to check the return value.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            if (CONF.command.all is False and"},{"line_number":358,"context_line":"                    CONF.command.domain_name is None):"},{"line_number":359,"context_line":"                print(_(\u0027At least one option must be provided\u0027))"},{"line_number":360,"context_line":"                return False"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"            if (CONF.command.all is True and"},{"line_number":363,"context_line":"                    CONF.command.domain_name is not None):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_ac84c25d","line":360,"in_reply_to":"9a80dd14_16497932","updated":"2015-03-17 23:52:40.000000000","message":"....although I thought one of the concerns was to avoid a yucky stack trace in place on a error message?","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"            if (CONF.command.all is True and"},{"line_number":363,"context_line":"                    CONF.command.domain_name is not None):"},{"line_number":364,"context_line":"                print(_(\u0027--all option cannot be mixed with \u0027"},{"line_number":365,"context_line":"                        \u0027the domain-name option\u0027))"},{"line_number":366,"context_line":"                return False"},{"line_number":367,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_16709972","line":364,"updated":"2015-03-17 14:23:38.000000000","message":"change \"--all\" to \"The --all\"\n\nchange \"mixed\" to \"used\"","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"            if (CONF.command.all is True and"},{"line_number":363,"context_line":"                    CONF.command.domain_name is not None):"},{"line_number":364,"context_line":"                print(_(\u0027--all option cannot be mixed with \u0027"},{"line_number":365,"context_line":"                        \u0027the domain-name option\u0027))"},{"line_number":366,"context_line":"                return False"},{"line_number":367,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_7228ee85","line":364,"in_reply_to":"9a80dd14_16709972","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            if (CONF.command.all is True and"},{"line_number":363,"context_line":"                    CONF.command.domain_name is not None):"},{"line_number":364,"context_line":"                print(_(\u0027--all option cannot be mixed with \u0027"},{"line_number":365,"context_line":"                        \u0027the domain-name option\u0027))"},{"line_number":366,"context_line":"                return False"},{"line_number":367,"context_line":"            return True"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_51b77b3a","line":365,"updated":"2015-03-17 14:23:38.000000000","message":"change \"domain-name\" to \"--domain-name\" for consistency.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            if (CONF.command.all is True and"},{"line_number":363,"context_line":"                    CONF.command.domain_name is not None):"},{"line_number":364,"context_line":"                print(_(\u0027--all option cannot be mixed with \u0027"},{"line_number":365,"context_line":"                        \u0027the domain-name option\u0027))"},{"line_number":366,"context_line":"                return False"},{"line_number":367,"context_line":"            return True"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_32e1162b","line":365,"in_reply_to":"9a80dd14_51b77b3a","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                    resource_manager.driver.get_domain_by_name(domain_name))"},{"line_number":374,"context_line":"            except exception.DomainNotFound:"},{"line_number":375,"context_line":"                LOG.warning("},{"line_number":376,"context_line":"                    _LW(\u0027Invalid domain name (%s) found in config file name\u0027),"},{"line_number":377,"context_line":"                    domain_name)"},{"line_number":378,"context_line":"                return"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_d6db614d","line":376,"updated":"2015-03-17 14:23:38.000000000","message":"This should say what\u0027s going to happen because of this (it\u0027s skipped), and also what the name of the file is.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                    resource_manager.driver.get_domain_by_name(domain_name))"},{"line_number":374,"context_line":"            except exception.DomainNotFound:"},{"line_number":375,"context_line":"                LOG.warning("},{"line_number":376,"context_line":"                    _LW(\u0027Invalid domain name (%s) found in config file name\u0027),"},{"line_number":377,"context_line":"                    domain_name)"},{"line_number":378,"context_line":"                return"},{"line_number":379,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_52876a12","line":376,"in_reply_to":"9a80dd14_d6db614d","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                LOG.warning("},{"line_number":376,"context_line":"                    _LW(\u0027Invalid domain name (%s) found in config file name\u0027),"},{"line_number":377,"context_line":"                    domain_name)"},{"line_number":378,"context_line":"                return"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"            if domain_config_manager.get_config_with_sensitive_info("},{"line_number":381,"context_line":"                    domain_ref[\u0027id\u0027]):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_11e5030a","line":378,"updated":"2015-03-17 14:23:38.000000000","message":"When I do\n\n keystone-manage domain_config_upload --domain-name something\n\nwhere \"something\" isn\u0027t a domain, it prints a warning but for some reason the command is still successful:\n\n $ echo $?\n 0\n\nthis should have failed.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                LOG.warning("},{"line_number":376,"context_line":"                    _LW(\u0027Invalid domain name (%s) found in config file name\u0027),"},{"line_number":377,"context_line":"                    domain_name)"},{"line_number":378,"context_line":"                return"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"            if domain_config_manager.get_config_with_sensitive_info("},{"line_number":381,"context_line":"                    domain_ref[\u0027id\u0027]):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_470241b5","line":378,"in_reply_to":"9a80dd14_11e5030a","updated":"2015-03-17 23:52:40.000000000","message":"So one question...what would we expect? An error code of 1 (which is a general Linux error)?","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            sections \u003d {}"},{"line_number":389,"context_line":"            normalized \u003d {}"},{"line_number":390,"context_line":"            parser \u003d cfg.ConfigParser(file_name, sections)"},{"line_number":391,"context_line":"            parser._add_normalized(normalized)"},{"line_number":392,"context_line":"            parser.parse()"},{"line_number":393,"context_line":"            for group in sections:"},{"line_number":394,"context_line":"                for option in sections[group]:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_f685c507","line":391,"updated":"2015-03-17 14:23:38.000000000","message":"this is calling an internal method of cfg.ConfigParser. -1","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":388,"context_line":"            sections \u003d {}"},{"line_number":389,"context_line":"            normalized \u003d {}"},{"line_number":390,"context_line":"            parser \u003d cfg.ConfigParser(file_name, sections)"},{"line_number":391,"context_line":"            parser._add_normalized(normalized)"},{"line_number":392,"context_line":"            parser.parse()"},{"line_number":393,"context_line":"            for group in sections:"},{"line_number":394,"context_line":"                for option in sections[group]:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_cc59f68f","line":391,"in_reply_to":"9a80dd14_f685c507","updated":"2015-03-17 23:52:40.000000000","message":"removed (Its not actually needed)","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"9e0837ac11c58d27e10062a9527cbfe459656e10","unresolved":false,"context_lines":[{"line_number":334,"context_line":"    def load_backends(self):"},{"line_number":335,"context_line":"        \"\"\"Load the backends needed for uploading domain configs."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        We only need the resource and domain_cnfig managers, but there are"},{"line_number":338,"context_line":"        some dependencies which mean we have to load the assignment and"},{"line_number":339,"context_line":"        identity managers as well."},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_d5c25233","line":337,"updated":"2015-03-18 04:08:05.000000000","message":"\"domain_config\"","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":334,"context_line":"    def load_backends(self):"},{"line_number":335,"context_line":"        \"\"\"Load the backends needed for uploading domain configs."},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        We only need the resource and domain_cnfig managers, but there are"},{"line_number":338,"context_line":"        some dependencies which mean we have to load the assignment and"},{"line_number":339,"context_line":"        identity managers as well."},{"line_number":340,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_6bcd3d86","line":337,"in_reply_to":"9a80dd14_d5c25233","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e610125c6f41bb1d4fd991f17c04ec25654bcd6a","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                CONF.command.domain_name is None):"},{"line_number":364,"context_line":"            print(_(\u0027At least one option must be provided, use either \u0027"},{"line_number":365,"context_line":"                    \u0027--all or --domain-name\u0027))"},{"line_number":366,"context_line":"            return False"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        if (CONF.command.all is True and"},{"line_number":369,"context_line":"                CONF.command.domain_name is not None):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_2449c68e","line":366,"updated":"2015-03-18 02:08:50.000000000","message":"this method can raise exceptions and still have the program not print out a stack trace, just catch the exception and handle it.","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                CONF.command.domain_name is None):"},{"line_number":364,"context_line":"            print(_(\u0027At least one option must be provided, use either \u0027"},{"line_number":365,"context_line":"                    \u0027--all or --domain-name\u0027))"},{"line_number":366,"context_line":"            return False"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        if (CONF.command.all is True and"},{"line_number":369,"context_line":"                CONF.command.domain_name is not None):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_abc73563","line":366,"in_reply_to":"9a80dd14_2449c68e","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e610125c6f41bb1d4fd991f17c04ec25654bcd6a","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        except exception.DomainNotFound:"},{"line_number":380,"context_line":"            LOG.warning("},{"line_number":381,"context_line":"                _LW(\u0027Invalid domain name: %(domain)s found in config file \u0027"},{"line_number":382,"context_line":"                    \u0027name: $(file)s - ignoring this file.\u0027) % {"},{"line_number":383,"context_line":"                        \u0027domain\u0027: domain_name,"},{"line_number":384,"context_line":"                        \u0027file\u0027: file_name})"},{"line_number":385,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_4414fa9e","line":382,"updated":"2015-03-18 02:08:50.000000000","message":"Cange $ to %.\n\nAlso, use , instead of %.","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        except exception.DomainNotFound:"},{"line_number":380,"context_line":"            LOG.warning("},{"line_number":381,"context_line":"                _LW(\u0027Invalid domain name: %(domain)s found in config file \u0027"},{"line_number":382,"context_line":"                    \u0027name: $(file)s - ignoring this file.\u0027) % {"},{"line_number":383,"context_line":"                        \u0027domain\u0027: domain_name,"},{"line_number":384,"context_line":"                        \u0027file\u0027: file_name})"},{"line_number":385,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_bed936f6","line":382,"in_reply_to":"9a80dd14_4414fa9e","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e610125c6f41bb1d4fd991f17c04ec25654bcd6a","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                _LW(\u0027Invalid domain name: %(domain)s found in config file \u0027"},{"line_number":382,"context_line":"                    \u0027name: $(file)s - ignoring this file.\u0027) % {"},{"line_number":383,"context_line":"                        \u0027domain\u0027: domain_name,"},{"line_number":384,"context_line":"                        \u0027file\u0027: file_name})"},{"line_number":385,"context_line":"            return"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        if self.domain_config_manager.get_config_with_sensitive_info("}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_a4d936f6","line":384,"updated":"2015-03-18 02:08:50.000000000","message":"When I ran this with\n\n $ bin/keystone-manage domain_config_upload --domain-name something\n\nit doesn\u0027t fail, echo $? shows it exited with 0 status. It should exit with non-zero status.","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                _LW(\u0027Invalid domain name: %(domain)s found in config file \u0027"},{"line_number":382,"context_line":"                    \u0027name: $(file)s - ignoring this file.\u0027) % {"},{"line_number":383,"context_line":"                        \u0027domain\u0027: domain_name,"},{"line_number":384,"context_line":"                        \u0027file\u0027: file_name})"},{"line_number":385,"context_line":"            return"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        if self.domain_config_manager.get_config_with_sensitive_info("}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_4be079fa","line":384,"in_reply_to":"9a80dd14_a4d936f6","updated":"2015-03-18 16:20:43.000000000","message":"Fixed","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e610125c6f41bb1d4fd991f17c04ec25654bcd6a","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        if self.domain_config_manager.get_config_with_sensitive_info("},{"line_number":388,"context_line":"                domain_ref[\u0027id\u0027]):"},{"line_number":389,"context_line":"            LOG.warn(_LW(\u0027Domain: %(domain)s already has a configuration \u0027"},{"line_number":390,"context_line":"                         \u0027defined - ignoring file: %(file)s.\u0027) % {"},{"line_number":391,"context_line":"                             \u0027domain\u0027: domain_name,"},{"line_number":392,"context_line":"                             \u0027file\u0027: file_name})"},{"line_number":393,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_640bbe7d","line":390,"updated":"2015-03-18 02:08:50.000000000","message":"use , instead of %.","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        if self.domain_config_manager.get_config_with_sensitive_info("},{"line_number":388,"context_line":"                domain_ref[\u0027id\u0027]):"},{"line_number":389,"context_line":"            LOG.warn(_LW(\u0027Domain: %(domain)s already has a configuration \u0027"},{"line_number":390,"context_line":"                         \u0027defined - ignoring file: %(file)s.\u0027) % {"},{"line_number":391,"context_line":"                             \u0027domain\u0027: domain_name,"},{"line_number":392,"context_line":"                             \u0027file\u0027: file_name})"},{"line_number":393,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_9ed392d4","line":390,"in_reply_to":"9a80dd14_640bbe7d","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"9e0837ac11c58d27e10062a9527cbfe459656e10","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        sections \u003d {}"},{"line_number":396,"context_line":"        parser \u003d cfg.ConfigParser(file_name, sections)"},{"line_number":397,"context_line":"        parser.parse()"},{"line_number":398,"context_line":"        for group in sections:"},{"line_number":399,"context_line":"            for option in sections[group]:"},{"line_number":400,"context_line":"                    sections[group][option] \u003d sections[group][option][0]"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_95ae1a2e","line":397,"updated":"2015-03-18 04:08:05.000000000","message":"parse() could raise an exception, add exception handling here","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        sections \u003d {}"},{"line_number":396,"context_line":"        parser \u003d cfg.ConfigParser(file_name, sections)"},{"line_number":397,"context_line":"        parser.parse()"},{"line_number":398,"context_line":"        for group in sections:"},{"line_number":399,"context_line":"            for option in sections[group]:"},{"line_number":400,"context_line":"                    sections[group][option] \u003d sections[group][option][0]"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_ebd20d33","line":397,"in_reply_to":"9a80dd14_95ae1a2e","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e610125c6f41bb1d4fd991f17c04ec25654bcd6a","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        conf_dir \u003d CONF.identity.domain_config_dir"},{"line_number":405,"context_line":"        if not os.path.exists(conf_dir):"},{"line_number":406,"context_line":"            raise ValueError(_(\u0027Unable to locate domain config \u0027"},{"line_number":407,"context_line":"                               \u0027directory: %s\u0027), conf_dir)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        if domain_name:"},{"line_number":410,"context_line":"            # Request is to upload the configs for just one domain"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_249466e7","line":407,"updated":"2015-03-18 02:08:50.000000000","message":"this should use % rather than , since it\u0027s not a log call.\n\nAlso, this is printing out a stack trace which is not a nice UX. It should just be printing a message.","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"9e0837ac11c58d27e10062a9527cbfe459656e10","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        for r, d, f in os.walk(conf_dir):"},{"line_number":420,"context_line":"            for fname in f:"},{"line_number":421,"context_line":"                if (fname.startswith(DOMAIN_CONF_FHEAD) and"},{"line_number":422,"context_line":"                        fname.endswith(DOMAIN_CONF_FTAIL)):"},{"line_number":423,"context_line":"                    if fname.count(\u0027.\u0027) \u003e\u003d 2:"},{"line_number":424,"context_line":"                        self.upload_config_to_database("},{"line_number":425,"context_line":"                            os.path.join(r, fname),"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_b51ebe72","line":422,"updated":"2015-03-18 04:08:05.000000000","message":"could also be implemented using regex and Match.group() to extract domain name.\n\nsomething like:\nm \u003d re.match(DOMAIN_CONF_FHEAD + \"(.+)\" + DOMAIN_CONF_FTAIL)\nif m:\n    domain_name \u003d m.group(1)","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        for r, d, f in os.walk(conf_dir):"},{"line_number":420,"context_line":"            for fname in f:"},{"line_number":421,"context_line":"                if (fname.startswith(DOMAIN_CONF_FHEAD) and"},{"line_number":422,"context_line":"                        fname.endswith(DOMAIN_CONF_FTAIL)):"},{"line_number":423,"context_line":"                    if fname.count(\u0027.\u0027) \u003e\u003d 2:"},{"line_number":424,"context_line":"                        self.upload_config_to_database("},{"line_number":425,"context_line":"                            os.path.join(r, fname),"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_cdcf2656","line":422,"in_reply_to":"9a80dd14_b51ebe72","updated":"2015-03-18 16:20:43.000000000","message":"yep, it could, but as per previous review comments, for safety, I am keeping the same code structure as where this is used in the identity manager","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e610125c6f41bb1d4fd991f17c04ec25654bcd6a","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            # Once validation has occurred, either CONF.command.domain_name is"},{"line_number":435,"context_line":"            # set to the name of an explicit domain, or it\u0027s None to indicate"},{"line_number":436,"context_line":"            # that we want all domain config files."},{"line_number":437,"context_line":"            self.read_domain_configs_from_files(CONF.command.domain_name)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_c4a9ca26","line":437,"updated":"2015-03-18 02:08:50.000000000","message":"don\u0027t need to pass in a parameter since read_domain_configs_from_files can read the CONF value.","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            # Once validation has occurred, either CONF.command.domain_name is"},{"line_number":435,"context_line":"            # set to the name of an explicit domain, or it\u0027s None to indicate"},{"line_number":436,"context_line":"            # that we want all domain config files."},{"line_number":437,"context_line":"            self.read_domain_configs_from_files(CONF.command.domain_name)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_ad003267","line":437,"in_reply_to":"9a80dd14_c4a9ca26","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"9e0837ac11c58d27e10062a9527cbfe459656e10","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        parser.add_argument(\u0027--all\u0027, default\u003dFalse, action\u003d\u0027store_true\u0027,"},{"line_number":449,"context_line":"                            help\u003d\u0027Upload contents of all domain specific \u0027"},{"line_number":450,"context_line":"                                 \u0027configuration files. Either use this option \u0027"},{"line_number":451,"context_line":"                                 \u0027or use the --domain-name option to chose a \u0027"},{"line_number":452,"context_line":"                                 \u0027specific domain.\u0027)"},{"line_number":453,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":454,"context_line":"                            help\u003d\u0027Upload contents of the specific \u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_10feb805","line":451,"updated":"2015-03-18 04:08:05.000000000","message":"choose","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5684b3dacb14a9021c2bf7079c5da774f3856cbc","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        parser.add_argument(\u0027--all\u0027, default\u003dFalse, action\u003d\u0027store_true\u0027,"},{"line_number":449,"context_line":"                            help\u003d\u0027Upload contents of all domain specific \u0027"},{"line_number":450,"context_line":"                                 \u0027configuration files. Either use this option \u0027"},{"line_number":451,"context_line":"                                 \u0027or use the --domain-name option to chose a \u0027"},{"line_number":452,"context_line":"                                 \u0027specific domain.\u0027)"},{"line_number":453,"context_line":"        parser.add_argument(\u0027--domain-name\u0027, default\u003dNone,"},{"line_number":454,"context_line":"                            help\u003d\u0027Upload contents of the specific \u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a80dd14_6d063a87","line":451,"in_reply_to":"9a80dd14_10feb805","updated":"2015-03-18 16:20:43.000000000","message":"Done","commit_id":"147b3c4b1193397781a919acfa30152ba43bb443"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ec7b00b38feb3a1423869f1b6178a80c0cecfcc","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        try:"},{"line_number":413,"context_line":"            parser \u003d cfg.ConfigParser(file_name, sections)"},{"line_number":414,"context_line":"            parser.parse()"},{"line_number":415,"context_line":"        except:"},{"line_number":416,"context_line":"            # We explicitly don\u0027t try and differentiate the error cases, in"},{"line_number":417,"context_line":"            # order to keep the code in this tool more robust as oslo.config"},{"line_number":418,"context_line":"            # changes."}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_fa371a4b","line":415,"updated":"2015-03-18 19:50:26.000000000","message":"pep8","commit_id":"6faf678d9c971fe6d13e6d797cf355a3ab8ea836"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ec7b00b38feb3a1423869f1b6178a80c0cecfcc","unresolved":false,"context_lines":[{"line_number":442,"context_line":"            # We\u0027ve already given all the info we can in a message, so carry"},{"line_number":443,"context_line":"            # on to the next one"},{"line_number":444,"context_line":"            pass"},{"line_number":445,"context_line":"        except:"},{"line_number":446,"context_line":"            # Some other error occurred relating to this specific config file"},{"line_number":447,"context_line":"            # or domain. Since we are trying to upload all the config files,"},{"line_number":448,"context_line":"            # we\u0027ll continue and hide this exception. However, we tell the"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_1a3eae29","line":445,"updated":"2015-03-18 19:50:26.000000000","message":"pep8","commit_id":"6faf678d9c971fe6d13e6d797cf355a3ab8ea836"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0ec7b00b38feb3a1423869f1b6178a80c0cecfcc","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        # First off, let\u0027s just check we can talk to the domain database"},{"line_number":498,"context_line":"        try:"},{"line_number":499,"context_line":"            self.resource_manager.driver.list_domains(driver_hints.Hints())"},{"line_number":500,"context_line":"        except:"},{"line_number":501,"context_line":"            # It is likely that there is some SQL or other backend error"},{"line_number":502,"context_line":"            # related to set up"},{"line_number":503,"context_line":"            print(_(\u0027Unable to access the keystone database, please check it \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_5a4826cc","line":500,"updated":"2015-03-18 19:50:26.000000000","message":"pep8","commit_id":"6faf678d9c971fe6d13e6d797cf355a3ab8ea836"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2c034ba81ddf1bc966f1fd0ae3193275cd5a5028","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        except ValueError:"},{"line_number":511,"context_line":"            # We will already have printed out a nice message, so indicate"},{"line_number":512,"context_line":"            # to caller the non-success error code to be used."},{"line_number":513,"context_line":"            return 1"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"class DomainConfigUpload(BaseApp):"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a80dd14_a0f6625b","line":513,"updated":"2015-03-18 16:22:09.000000000","message":"so I am open to suggestions as to what error code to use....1 appears to be a general error code.  I don\u0027t *think* it is worth trying to use different error codes for different error situations.","commit_id":"6faf678d9c971fe6d13e6d797cf355a3ab8ea836"}],"keystone/tests/unit/test_cli.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.setup_initial_domains()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def config_files(self):"},{"line_number":56,"context_line":"        CONF.register_cli_opt(cli.command_opt)"},{"line_number":57,"context_line":"        self.addCleanup(self.cleanup)"},{"line_number":58,"context_line":"        config_files \u003d super(CliDomainConfigAllTestCase, self).config_files()"},{"line_number":59,"context_line":"        config_files.append(tests.dirs.tests_conf(\u0027backend_sql.conf\u0027))"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_31ccc761","line":56,"updated":"2015-03-17 14:23:38.000000000","message":"this should be using config fixture.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.setup_initial_domains()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def config_files(self):"},{"line_number":56,"context_line":"        CONF.register_cli_opt(cli.command_opt)"},{"line_number":57,"context_line":"        self.addCleanup(self.cleanup)"},{"line_number":58,"context_line":"        config_files \u003d super(CliDomainConfigAllTestCase, self).config_files()"},{"line_number":59,"context_line":"        config_files.append(tests.dirs.tests_conf(\u0027backend_sql.conf\u0027))"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_87dc391a","line":56,"in_reply_to":"9a80dd14_31ccc761","updated":"2015-03-17 23:52:40.000000000","message":"Done","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5d21376f2d089c800ce77b7f874820876420e2fe","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                ref \u003d self.resource_api.create_domain("},{"line_number":75,"context_line":"                    domain[\u0027id\u0027], domain)"},{"line_number":76,"context_line":"            except exception.Conflict:"},{"line_number":77,"context_line":"                ref \u003d ("},{"line_number":78,"context_line":"                    self.resource_api.get_domain_by_name(domain[\u0027name\u0027]))"},{"line_number":79,"context_line":"            return ref"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_b115179d","line":77,"updated":"2015-03-17 14:23:38.000000000","message":"why would this happen? Add a comment.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"d36cb54dcec4a5a34bf3686a3da3f443ec15fe41","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                ref \u003d self.resource_api.create_domain("},{"line_number":75,"context_line":"                    domain[\u0027id\u0027], domain)"},{"line_number":76,"context_line":"            except exception.Conflict:"},{"line_number":77,"context_line":"                ref \u003d ("},{"line_number":78,"context_line":"                    self.resource_api.get_domain_by_name(domain[\u0027name\u0027]))"},{"line_number":79,"context_line":"            return ref"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a80dd14_c7e631e8","line":77,"in_reply_to":"9a80dd14_b115179d","updated":"2015-03-17 23:52:40.000000000","message":"I think this is a hangover from the old testing structures....removing it.","commit_id":"644ee22137624ef0824fb81d7bf57475bc24ec3c"}]}
