)]}'
{"swift/common/middleware/s3api/s3token.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9af959d0eeef0c2e0f761896a38e2aa4cf039b83","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                auth \u003d auth_plugin.load_from_options(**auth_options)"},{"line_number":197,"context_line":"                session \u003d keystone_session.Session(auth\u003dauth)"},{"line_number":198,"context_line":"                self.keystoneclient \u003d keystone_client.Client(session\u003dsession,"},{"line_number":199,"context_line":"                    region_name\u003dstr(conf.get(\u0027region_name\u0027, \u0027\u0027)))"},{"line_number":200,"context_line":"                self._logger.info(\"Caching s3tokens for %s seconds\","},{"line_number":201,"context_line":"                                  self._secret_cache_duration)"},{"line_number":202,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_f0f2c104","line":199,"range":{"start_line":199,"start_character":60,"end_line":199,"end_character":62},"updated":"2020-09-21 21:32:15.000000000","message":"It looks like keystoneclient will treat any falsey value as unspecified, but I\u0027m not sure that was a conscious design decision. What do you think about something like\n\n self.keystoneclient \u003d keystone_client.Client(\n     session\u003dsession,\n     region_name\u003dconf.get(\u0027region_name\u0027))\n\ninstead? The str() shouldn\u0027t be necessary; if region_name is specified in the config, it\u0027ll be available as a string. If it isn\u0027t, with this it\u0027ll pass through as None, matching ksc\u0027s default. For tests, maybe someting like\n\ndiff --git a/test/unit/common/middleware/s3api/test_s3token.py b/test/unit/common/middleware/s3api/test_s3token.py\nindex 6b43d1acc..b1b582c3b 100644\n--- a/test/unit/common/middleware/s3api/test_s3token.py\n+++ b/test/unit/common/middleware/s3api/test_s3token.py\n@@ -526,6 +526,7 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):\n             \u0027project_domain_name\u0027: \u0027default\u0027,\n         })(FakeApp())\n         self.assertEqual(20, self.middleware._secret_cache_duration)\n+        self.assertIsNone(MOCK_KEYSTONE.mock_calls[0][2][\u0027region_name\u0027])\n \n         cache \u003d MOCK_CACHE_FROM_ENV.return_value\n \n@@ -562,8 +563,11 @@ class S3TokenMiddlewareTestGood(S3TokenMiddlewareTestBase):\n             \u0027project_name\u0027: \u0027service\u0027,\n             \u0027user_domain_name\u0027: \u0027default\u0027,\n             \u0027project_domain_name\u0027: \u0027default\u0027,\n+            \u0027region_name\u0027: \u0027some-other-region\u0027,\n         })(FakeApp())\n         self.assertEqual(20, self.middleware._secret_cache_duration)\n+        self.assertEqual(MOCK_KEYSTONE.mock_calls[0][2][\u0027region_name\u0027],\n+                         \u0027some-other-region\u0027)\n \n         cache \u003d MOCK_CACHE_FROM_ENV.return_value\n         cache.get.return_value \u003d None\n\nwill do?","commit_id":"c8ad794b6054805722bea72313660a0637374fac"}]}
