)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c42e7de386817867c9001ed6740e553c560a30bb","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Admin credentials are not mandatory to run Tempest, but when provided they"},{"line_number":24,"context_line":"can be used to:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"- Run tests for admin APIs"},{"line_number":27,"context_line":"- Generate test credentials on the fly (see `Dynamic Credentials`_)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"When keystone uses a policy that requires domain scoped tokens for admin"}],"source_content_type":"text/x-rst","patch_set":47,"id":"7aa08908_c561aed5","line":26,"updated":"2016-06-09 14:54:02.000000000","message":"Oops, we missed another thing from the legacy removal, we don\u0027t use the configured admin creds for running tests anymore. Followup patch time","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"}],"tempest/api/identity/admin/v3/test_trusts.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"caef61acc79d0a3d7c1853305ec7c9c954955f01","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            password\u003dself.trustor_password,"},{"line_number":99,"context_line":"            user_domain_id\u003d\u0027default\u0027,"},{"line_number":100,"context_line":"            tenant_name\u003dself.trustor_project_name,"},{"line_number":101,"context_line":"            project_domain_id\u003d\u0027default\u0027,"},{"line_number":102,"context_line":"            domain_id\u003d\u0027default\u0027)"},{"line_number":103,"context_line":"        os \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":104,"context_line":"        self.trustor_client \u003d os.trusts_client"}],"source_content_type":"text/x-python","patch_set":32,"id":"dab17558_720e323c","line":101,"updated":"2016-05-10 16:19:51.000000000","message":"What\u0027s the difference between project_domain_id and domain_id ?","commit_id":"110ab01d0b0c9b224468fee9891f152ec600af2f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"a4e3835bf8bbb70be05660111163eb585f7f08f5","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            password\u003dself.trustor_password,"},{"line_number":99,"context_line":"            user_domain_id\u003d\u0027default\u0027,"},{"line_number":100,"context_line":"            tenant_name\u003dself.trustor_project_name,"},{"line_number":101,"context_line":"            project_domain_id\u003d\u0027default\u0027,"},{"line_number":102,"context_line":"            domain_id\u003d\u0027default\u0027)"},{"line_number":103,"context_line":"        os \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":104,"context_line":"        self.trustor_client \u003d os.trusts_client"}],"source_content_type":"text/x-python","patch_set":32,"id":"dab17558_e591acf2","line":101,"in_reply_to":"dab17558_720e323c","updated":"2016-05-10 21:26:55.000000000","message":"The project_domain_id is the id of the domain the project belongs to, and it\u0027s used when requesting a project scoped token.\nDomain id is instead used when requesting a domain scoped token.\nIf domain_id is not set, requesting a domain scoped token ends up in requesting an unscoped token which is not the right behaviour.","commit_id":"110ab01d0b0c9b224468fee9891f152ec600af2f"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0e12ace5372ee30e1ac345657c755b0bc1c148de","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            password\u003dself.trustor_password,"},{"line_number":99,"context_line":"            user_domain_id\u003d\u0027default\u0027,"},{"line_number":100,"context_line":"            tenant_name\u003dself.trustor_project_name,"},{"line_number":101,"context_line":"            project_domain_id\u003d\u0027default\u0027,"},{"line_number":102,"context_line":"            domain_id\u003d\u0027default\u0027)"},{"line_number":103,"context_line":"        os \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":104,"context_line":"        self.trustor_client \u003d os.trusts_client"}],"source_content_type":"text/x-python","patch_set":32,"id":"dab17558_b4ecf7f3","line":101,"in_reply_to":"dab17558_720e323c","updated":"2016-05-10 22:07:31.000000000","message":"you should not specify both.  domain_id ios for a domain scoped token, project_domain_id is for a project scoped token.","commit_id":"110ab01d0b0c9b224468fee9891f152ec600af2f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"79d1a5f7fb526e58994ecf5a3ceaa36f6601302c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            password\u003dself.trustor_password,"},{"line_number":99,"context_line":"            user_domain_id\u003d\u0027default\u0027,"},{"line_number":100,"context_line":"            tenant_name\u003dself.trustor_project_name,"},{"line_number":101,"context_line":"            project_domain_id\u003d\u0027default\u0027,"},{"line_number":102,"context_line":"            domain_id\u003d\u0027default\u0027)"},{"line_number":103,"context_line":"        os \u003d clients.Manager(credentials\u003dcreds)"},{"line_number":104,"context_line":"        self.trustor_client \u003d os.trusts_client"}],"source_content_type":"text/x-python","patch_set":32,"id":"dab17558_6c2f4ea1","line":101,"in_reply_to":"dab17558_b4ecf7f3","updated":"2016-05-11 10:54:55.000000000","message":"The way it works is that the credentials object holds all the credential data. Then based on the scope, a subset is sent to the token request.","commit_id":"110ab01d0b0c9b224468fee9891f152ec600af2f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6a9eb3a2d47f272ce5b204c77810c23adf310fbc","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    @test.idempotent_id(\u00274773ebd5-ecbf-4255-b8d8-b63e6f72b65d\u0027)"},{"line_number":269,"context_line":"    def test_get_trusts_all(self):"},{"line_number":270,"context_line":"        self.create_trust()"},{"line_number":271,"context_line":"        self.os_adm.auth_provider.scope \u003d \u0027project\u0027"},{"line_number":272,"context_line":"        trusts_get \u003d self.trusts_client.list_trusts()[\u0027trusts\u0027]"},{"line_number":273,"context_line":"        trusts \u003d [t for t in trusts_get"},{"line_number":274,"context_line":"                  if t[\u0027id\u0027] \u003d\u003d self.trust_id]"}],"source_content_type":"text/x-python","patch_set":44,"id":"7aa08908_c1563ecd","line":271,"range":{"start_line":271,"start_character":8,"end_line":271,"end_character":51},"updated":"2016-06-07 21:18:47.000000000","message":"It would be nice to put NOTE here to explain this change of scope.\nIn addition, I guess it is necessary to rollback the scope to the default value \"domain\" because this affects the class value.","commit_id":"1ee44de8b02942251b3804decc296415ac2c57fa"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"967ceb080fdb193914bb952b9938b14858b276fd","unresolved":false,"context_lines":[{"line_number":268,"context_line":"    @test.idempotent_id(\u00274773ebd5-ecbf-4255-b8d8-b63e6f72b65d\u0027)"},{"line_number":269,"context_line":"    def test_get_trusts_all(self):"},{"line_number":270,"context_line":"        self.create_trust()"},{"line_number":271,"context_line":"        self.os_adm.auth_provider.scope \u003d \u0027project\u0027"},{"line_number":272,"context_line":"        trusts_get \u003d self.trusts_client.list_trusts()[\u0027trusts\u0027]"},{"line_number":273,"context_line":"        trusts \u003d [t for t in trusts_get"},{"line_number":274,"context_line":"                  if t[\u0027id\u0027] \u003d\u003d self.trust_id]"}],"source_content_type":"text/x-python","patch_set":44,"id":"7aa08908_dc88c073","line":271,"range":{"start_line":271,"start_character":8,"end_line":271,"end_character":51},"in_reply_to":"7aa08908_c1563ecd","updated":"2016-06-08 11:30:31.000000000","message":"Done","commit_id":"1ee44de8b02942251b3804decc296415ac2c57fa"}],"tempest/common/credentials_factory.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5b03961b2941f351bb8ac74b0fe715781d2cd0dd","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                            if \u0027domain\u0027 in x)"},{"line_number":301,"context_line":"        if not domain_fields.intersection(kwargs.keys()):"},{"line_number":302,"context_line":"            domain_name \u003d CONF.auth.default_credentials_domain_name"},{"line_number":303,"context_line":"            # NOTE(andreaf) Setting domain_name implicitly sets user and"},{"line_number":304,"context_line":"            # project domain names, if they are None"},{"line_number":305,"context_line":"            params[\u0027domain_name\u0027] \u003d domain_name"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"bab6814e_a32ee2f7","line":303,"updated":"2016-05-19 10:02:53.000000000","message":"I understand the comment but I don\"t understand \"why\"/\"how come\" ?","commit_id":"759efa352d971b32aa7832cfbfee0649ebd00a42"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"0e0129b992f87d4cb7efc06cd897fb615c7eab6a","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                            if \u0027domain\u0027 in x)"},{"line_number":301,"context_line":"        if not domain_fields.intersection(kwargs.keys()):"},{"line_number":302,"context_line":"            domain_name \u003d CONF.auth.default_credentials_domain_name"},{"line_number":303,"context_line":"            # NOTE(andreaf) Setting domain_name implicitly sets user and"},{"line_number":304,"context_line":"            # project domain names, if they are None"},{"line_number":305,"context_line":"            params[\u0027domain_name\u0027] \u003d domain_name"},{"line_number":306,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"bab6814e_3778652b","line":303,"in_reply_to":"bab6814e_a32ee2f7","updated":"2016-05-19 11:43:39.000000000","message":"http://git.openstack.org/cgit/openstack/tempest/tree/tempest/lib/auth.py#n647\n\nThis is something I did in the auth layer to keep control the number of config parameters and keeps things a bit more easy to use for most tests. \nAll tests in tempest but the identity one will just don\u0027t want to even think about domains, all users and projects just go in the default domain.\n\nWhen running tempest against a real cloud it may be useful to use a different domain for test users and project and that is supported via a single config flag.\n\nWe also support the case of pre-provisioned accounts that may have users and projects belonging to different domains if needed, but I doubt that is something anyone will ever use.","commit_id":"759efa352d971b32aa7832cfbfee0649ebd00a42"}],"tempest/common/dynamic_creds.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"47502d9fe04957571584954b7756b2d2792c5d10","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    identity_os.projects_client,"},{"line_number":106,"context_line":"                    identity_os.users_v3_client, identity_os.roles_v3_client,"},{"line_number":107,"context_line":"                    identity_os.domains_client,"},{"line_number":108,"context_line":"                    os.networks_client, os.routers_client,"},{"line_number":109,"context_line":"                    os.subnets_client, os.ports_client,"},{"line_number":110,"context_line":"                    os.security_groups_client)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _create_creds(self, suffix\u003d\"\", admin\u003dFalse, roles\u003dNone):"},{"line_number":113,"context_line":"        \"\"\"Create random credentials under the following schema."}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_a0fef402","line":110,"range":{"start_line":108,"start_character":20,"end_line":110,"end_character":45},"updated":"2016-06-09 23:59:13.000000000","message":"Do we need to use \"os\" clients for the other projects here?\nor can we use identity_os manager instead?\n\nMy point is can we change here like:\n\n if self.identity_version \u003d\u003d \u0027v2\u0027:\n     os \u003d clients.Manager(self.default_admin_creds)\n     return (os.identity_client, os.tenants_client, os.users_client,\n             ...\n else:\n     scope \u003d \u0027domain\u0027 if CONF.identity.admin_domain_scope else \u0027project\u0027\n     os \u003d clients.Manager(self.default_admin_creds, scope\u003dscope)\n     return (os.identity_v3_client, os.projects_client,\n             ...","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"895bfbb46a5b9aa444fff494970e19b478622314","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    identity_os.projects_client,"},{"line_number":106,"context_line":"                    identity_os.users_v3_client, identity_os.roles_v3_client,"},{"line_number":107,"context_line":"                    identity_os.domains_client,"},{"line_number":108,"context_line":"                    os.networks_client, os.routers_client,"},{"line_number":109,"context_line":"                    os.subnets_client, os.ports_client,"},{"line_number":110,"context_line":"                    os.security_groups_client)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _create_creds(self, suffix\u003d\"\", admin\u003dFalse, roles\u003dNone):"},{"line_number":113,"context_line":"        \"\"\"Create random credentials under the following schema."}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_a6ad5e8a","line":110,"range":{"start_line":108,"start_character":20,"end_line":110,"end_character":45},"in_reply_to":"7aa08908_a0fef402","updated":"2016-06-10 09:05:15.000000000","message":"Non-identity client should not use a domain scoped token, it wouldn\u0027t work for non-identity actions. \nIf the scope is \u0027project\u0027 we could use the same client manager, but the overhead of creating a client manager is close to zero (there\u0027s no API call involved until the clients are actually used).","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2fdfd4d767344353ceb90f91b670355bf30eddf5","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    identity_os.projects_client,"},{"line_number":106,"context_line":"                    identity_os.users_v3_client, identity_os.roles_v3_client,"},{"line_number":107,"context_line":"                    identity_os.domains_client,"},{"line_number":108,"context_line":"                    os.networks_client, os.routers_client,"},{"line_number":109,"context_line":"                    os.subnets_client, os.ports_client,"},{"line_number":110,"context_line":"                    os.security_groups_client)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _create_creds(self, suffix\u003d\"\", admin\u003dFalse, roles\u003dNone):"},{"line_number":113,"context_line":"        \"\"\"Create random credentials under the following schema."}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_f1b269e4","line":110,"range":{"start_line":108,"start_character":20,"end_line":110,"end_character":45},"in_reply_to":"7aa08908_a6ad5e8a","updated":"2016-06-10 16:49:56.000000000","message":"Thanks for your explanation, Andrea.\nI understand the meaning of line 99-100 now :)","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c42e7de386817867c9001ed6740e553c560a30bb","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                               self.admin_role)"},{"line_number":145,"context_line":"            role_assigned \u003d True"},{"line_number":146,"context_line":"            if (self.identity_version \u003d\u003d \u0027v3\u0027 and"},{"line_number":147,"context_line":"                    CONF.identity.admin_domain_scope):"},{"line_number":148,"context_line":"                self.creds_client.assign_user_role_on_domain("},{"line_number":149,"context_line":"                    user, CONF.identity.admin_role)"},{"line_number":150,"context_line":"        # Add roles specified in config file"}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_65643ae5","line":147,"updated":"2016-06-09 14:54:02.000000000","message":"So is there harm in setting the role on the domain here by default like before? It\u0027s not necessary for anything if the flag is False, but I\u0027m not sure it breaks anything. That being said I guess this is more consistent, and if we decide the other way it\u0027s easy enough to drop the seconday condition","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d435c18b2ebdd574719479d6bc8cab1b134e74f2","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                               self.admin_role)"},{"line_number":145,"context_line":"            role_assigned \u003d True"},{"line_number":146,"context_line":"            if (self.identity_version \u003d\u003d \u0027v3\u0027 and"},{"line_number":147,"context_line":"                    CONF.identity.admin_domain_scope):"},{"line_number":148,"context_line":"                self.creds_client.assign_user_role_on_domain("},{"line_number":149,"context_line":"                    user, CONF.identity.admin_role)"},{"line_number":150,"context_line":"        # Add roles specified in config file"}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_4f5e6677","line":147,"in_reply_to":"7aa08908_65643ae5","updated":"2016-06-09 21:41:23.000000000","message":"There shouldn\u0027t be any harm, but I thought it would be more consistent.","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"}],"tempest/common/preprov_creds.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5b03961b2941f351bb8ac74b0fe715781d2cd0dd","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            init_attributes \u003d creds.get_init_attributes()"},{"line_number":265,"context_line":"            hash_attributes \u003d self.hash_dict[\u0027creds\u0027][_hash].copy()"},{"line_number":266,"context_line":"            # Allow for the case of *domain_name populated from config"},{"line_number":267,"context_line":"            for domain_prefix in [\u0027\u0027, \u0027user_\u0027, \u0027project\u0027]:"},{"line_number":268,"context_line":"                domain_field \u003d \u0027\u0027.join([domain_prefix, \u0027domain_name\u0027])"},{"line_number":269,"context_line":"                if (domain_field in init_attributes and domain_field not in"},{"line_number":270,"context_line":"                        hash_attributes):"}],"source_content_type":"text/x-python","patch_set":36,"id":"bab6814e_a3f1c26c","line":267,"updated":"2016-05-19 10:02:53.000000000","message":"Aren\u0027t you missing a \u0027_\u0027 suffix here ?","commit_id":"759efa352d971b32aa7832cfbfee0649ebd00a42"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"31f5928a103ad01ff5426b3d48a17db07fd53633","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            init_attributes \u003d creds.get_init_attributes()"},{"line_number":265,"context_line":"            hash_attributes \u003d self.hash_dict[\u0027creds\u0027][_hash].copy()"},{"line_number":266,"context_line":"            # Allow for the case of *domain_name populated from config"},{"line_number":267,"context_line":"            for domain_prefix in [\u0027\u0027, \u0027user_\u0027, \u0027project\u0027]:"},{"line_number":268,"context_line":"                domain_field \u003d \u0027\u0027.join([domain_prefix, \u0027domain_name\u0027])"},{"line_number":269,"context_line":"                if (domain_field in init_attributes and domain_field not in"},{"line_number":270,"context_line":"                        hash_attributes):"}],"source_content_type":"text/x-python","patch_set":36,"id":"bab6814e_97ae7183","line":267,"in_reply_to":"bab6814e_a3f1c26c","updated":"2016-05-19 11:52:07.000000000","message":"good catch, indeed","commit_id":"759efa352d971b32aa7832cfbfee0649ebd00a42"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"5b03961b2941f351bb8ac74b0fe715781d2cd0dd","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            hash_attributes \u003d self.hash_dict[\u0027creds\u0027][_hash].copy()"},{"line_number":266,"context_line":"            # Allow for the case of *domain_name populated from config"},{"line_number":267,"context_line":"            for domain_prefix in [\u0027\u0027, \u0027user_\u0027, \u0027project\u0027]:"},{"line_number":268,"context_line":"                domain_field \u003d \u0027\u0027.join([domain_prefix, \u0027domain_name\u0027])"},{"line_number":269,"context_line":"                if (domain_field in init_attributes and domain_field not in"},{"line_number":270,"context_line":"                        hash_attributes):"},{"line_number":271,"context_line":"                    hash_attributes[domain_field] \u003d self.credentials_domain"}],"source_content_type":"text/x-python","patch_set":36,"id":"bab6814e_c3632619","line":268,"updated":"2016-05-19 10:02:53.000000000","message":"join is overkill here. I would find\n  domain_field \u003d domain_prefix + \u0027domain_name\u0027\n\nclearer.","commit_id":"759efa352d971b32aa7832cfbfee0649ebd00a42"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"31f5928a103ad01ff5426b3d48a17db07fd53633","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            hash_attributes \u003d self.hash_dict[\u0027creds\u0027][_hash].copy()"},{"line_number":266,"context_line":"            # Allow for the case of *domain_name populated from config"},{"line_number":267,"context_line":"            for domain_prefix in [\u0027\u0027, \u0027user_\u0027, \u0027project\u0027]:"},{"line_number":268,"context_line":"                domain_field \u003d \u0027\u0027.join([domain_prefix, \u0027domain_name\u0027])"},{"line_number":269,"context_line":"                if (domain_field in init_attributes and domain_field not in"},{"line_number":270,"context_line":"                        hash_attributes):"},{"line_number":271,"context_line":"                    hash_attributes[domain_field] \u003d self.credentials_domain"}],"source_content_type":"text/x-python","patch_set":36,"id":"bab6814e_b71bb57f","line":268,"in_reply_to":"bab6814e_c3632619","updated":"2016-05-19 11:52:07.000000000","message":"ok - performance wise it\u0027s hard to say but I agree the + is more readable.","commit_id":"759efa352d971b32aa7832cfbfee0649ebd00a42"}],"tempest/lib/auth.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c42e7de386817867c9001ed6740e553c560a30bb","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                       \u0027Service: %s, Region: %s, endpoint_type: %s\\n\u0027"},{"line_number":533,"context_line":"                       \u0027Catalog: %s\u0027)"},{"line_number":534,"context_line":"                raise exceptions.EndpointNotFound(msg % ("},{"line_number":535,"context_line":"                    self.scope, self.credentials, _auth_data, service, region,"},{"line_number":536,"context_line":"                    endpoint_type, catalog))"},{"line_number":537,"context_line":"        # Filter by endpoint type (interface)"},{"line_number":538,"context_line":"        filtered_catalog \u003d [ep for ep in service_catalog if"}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_a55e2210","line":535,"updated":"2016-06-09 14:54:02.000000000","message":"Won\u0027t we be logging passwords here with self.credentials? Probably don\u0027t want to do that","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"d435c18b2ebdd574719479d6bc8cab1b134e74f2","unresolved":false,"context_lines":[{"line_number":532,"context_line":"                       \u0027Service: %s, Region: %s, endpoint_type: %s\\n\u0027"},{"line_number":533,"context_line":"                       \u0027Catalog: %s\u0027)"},{"line_number":534,"context_line":"                raise exceptions.EndpointNotFound(msg % ("},{"line_number":535,"context_line":"                    self.scope, self.credentials, _auth_data, service, region,"},{"line_number":536,"context_line":"                    endpoint_type, catalog))"},{"line_number":537,"context_line":"        # Filter by endpoint type (interface)"},{"line_number":538,"context_line":"        filtered_catalog \u003d [ep for ep in service_catalog if"}],"source_content_type":"text/x-python","patch_set":47,"id":"7aa08908_6fb5227d","line":535,"in_reply_to":"7aa08908_a55e2210","updated":"2016-06-09 21:41:23.000000000","message":"No, we won\u0027t, it\u0027s one of my tricks :D http://git.openstack.org/cgit/openstack/tempest/tree/tempest/lib/auth.py#n659","commit_id":"100d18df69be8995f5baaa634c09fe6354656ec9"}]}
