)]}'
{"tempest/scenario/manager.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"50c18e32a1d03d702462e9ed8705c55fa701510f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    @classmethod"},{"line_number":224,"context_line":"    def _get_credentials(cls, get_creds, prefix):"},{"line_number":225,"context_line":"        if cls.config.compute.allow_tenant_isolation:"},{"line_number":226,"context_line":"            return get_creds()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)"},{"line_number":229,"context_line":"        password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F85XY%3D","line":226,"updated":"2013-12-19 02:25:26.000000000","message":"This line is the problem. When tenant isolation is enabled, credentials are generated here. Since you are calling the isolated tenants code, you get credentials in this order: username, tenant_name, password. But in line 211 you are expecting this order: username, password, tenant_name. This method should look like this:\n\n      def _get_credentials(cls, get_creds, prefix):\n          if cls.config.compute.allow_tenant_isolation:\n              username, tenant_name, password \u003d get_creds()\n          else:\n              username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)\n              password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)\n              tenant_name \u003d getattr(cls.config.identity, prefix + \u0027tenant_name\u0027)\n          return username, password, tenant_name","commit_id":"bbfa27880e5e7e1caabebb73846d64d578428d09"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"d7649a7fc7a2235d361a30d3b78396c66050a792","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    @classmethod"},{"line_number":224,"context_line":"    def _get_credentials(cls, get_creds, prefix):"},{"line_number":225,"context_line":"        if cls.config.compute.allow_tenant_isolation:"},{"line_number":226,"context_line":"            return get_creds()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)"},{"line_number":229,"context_line":"        password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F84Ak%3D","line":226,"in_reply_to":"AAAATn%2F85XY%3D","updated":"2013-12-19 09:42:59.000000000","message":"Done","commit_id":"bbfa27880e5e7e1caabebb73846d64d578428d09"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"47fea06eba36e4c6a4de0d6994aafc63a20b8d95","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    @classmethod"},{"line_number":224,"context_line":"    def _get_credentials(cls, get_creds, prefix):"},{"line_number":225,"context_line":"        if cls.config.compute.allow_tenant_isolation:"},{"line_number":226,"context_line":"            return get_creds()"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)"},{"line_number":229,"context_line":"        password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F85UA%3D","line":226,"in_reply_to":"AAAATn%2F85XY%3D","updated":"2013-12-19 02:48:21.000000000","message":"I agree with minsel.\n\nOr how about returning the values by dict? Of course, the code will be a little long but  I think it can be safer code. This is not strong opinion though.","commit_id":"bbfa27880e5e7e1caabebb73846d64d578428d09"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e42d2d72650fee6dd9e2a9820705f885e3bf0faa","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)"},{"line_number":228,"context_line":"            password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)"},{"line_number":229,"context_line":"            tenant_name \u003d getattr(cls.config.identity, prefix + \u0027tenant_name\u0027)"},{"line_number":230,"context_line":"        return username, password, tenant_name"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @classmethod"},{"line_number":233,"context_line":"    def credentials(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F826k%3D","line":230,"updated":"2013-12-19 14:22:44.000000000","message":"Why do you use the different order from the order of get_creds return value? It is better to keep the order.\n(but this patch is high priority for gate, feel free to ignore my comment).","commit_id":"d1a7fedeb26ce3073a0e84803db431322001ac36"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"3fdac38c21d02a0a7e55a35591d41062e16f5a03","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)"},{"line_number":228,"context_line":"            password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)"},{"line_number":229,"context_line":"            tenant_name \u003d getattr(cls.config.identity, prefix + \u0027tenant_name\u0027)"},{"line_number":230,"context_line":"        return username, password, tenant_name"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @classmethod"},{"line_number":233,"context_line":"    def credentials(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F813E%3D","line":230,"in_reply_to":"AAAATn%2F81%2Fg%3D","updated":"2013-12-19 16:57:35.000000000","message":"That\u0027s the order clients expect credentials, and I can use the method as a list","commit_id":"d1a7fedeb26ce3073a0e84803db431322001ac36"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aa9617c4d17fec41d0cb06bd3a23be978ac2b5a2","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            username \u003d getattr(cls.config.identity, prefix + \u0027username\u0027)"},{"line_number":228,"context_line":"            password \u003d getattr(cls.config.identity, prefix + \u0027password\u0027)"},{"line_number":229,"context_line":"            tenant_name \u003d getattr(cls.config.identity, prefix + \u0027tenant_name\u0027)"},{"line_number":230,"context_line":"        return username, password, tenant_name"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @classmethod"},{"line_number":233,"context_line":"    def credentials(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F81%2Fg%3D","line":230,"in_reply_to":"AAAATn%2F826k%3D","updated":"2013-12-19 16:37:27.000000000","message":"I don\u0027t understand the reason as well, but it does not matter apparently since line 210 has been changed accordingly, and so far alt_credentials and admin_credentials appear to not be called anywhere.","commit_id":"d1a7fedeb26ce3073a0e84803db431322001ac36"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"43ed4d0a45f995289c0a642487a7d71f72e2616c","unresolved":false,"context_lines":[{"line_number":943,"context_line":"    def credentials(cls):"},{"line_number":944,"context_line":"        username \u003d cls.config.identity.admin_username"},{"line_number":945,"context_line":"        password \u003d cls.config.identity.admin_password"},{"line_number":946,"context_line":"        tenant_name \u003d cls.config.identity.tenant_name"},{"line_number":947,"context_line":"        return username, tenant_name, password"},{"line_number":948,"context_line":""},{"line_number":949,"context_line":"    def _load_template(self, base_file, file_name):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F81LA%3D","line":946,"updated":"2013-12-19 20:02:50.000000000","message":"The argument order changing can have negative effect to the heat tests.","commit_id":"769bbff9fc6d7152e242c5aba335d736ae8bd8fb"}],"tempest/scenario/test_cross_tenant_connectivity.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"76e663ca8da6c6ea75ba48f2003fb049303328a0","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    def setUpClass(cls):"},{"line_number":145,"context_line":"        super(TestNetworkCrossTenant, cls).setUpClass()"},{"line_number":146,"context_line":"        cls.alt_tenant_id \u003d cls.manager._get_identity_client("},{"line_number":147,"context_line":"            *cls.alt_credentials()"},{"line_number":148,"context_line":"        ).tenant_id"},{"line_number":149,"context_line":"        cls.check_preconditions()"},{"line_number":150,"context_line":"        # TODO(mnewby) Consider looking up entities as needed instead"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F83ZU%3D","line":147,"updated":"2013-12-19 12:44:24.000000000","message":"perhaps it should be advisable to call alt_credentials only once and use the returned tuple above and at line 166","commit_id":"dfa77fa963e40cd28efeac526fbe558aa643020d"}]}
