diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-08-02 16:31:32 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-08-02 16:31:32 +0000 |
commit | d5c5bacb67a53086efcda4b8f5f675056ba8b2d8 (patch) | |
tree | 1790c74718c4ecb1933dafe990f63bba4e1f2c16 | |
parent | 6823b184041fc3f73db0e0772772c7f4c1600d20 (diff) | |
parent | 80582f2b860b2dadef7ae07bdbd8395bf03848b1 (diff) | |
download | python-cinderclient-d5c5bacb67a53086efcda4b8f5f675056ba8b2d8.tar.gz |
Merge "Mask passwords in client debug output"
-rw-r--r-- | cinderclient/client.py | 7 | ||||
-rw-r--r-- | cinderclient/tests/test_client.py | 30 |
2 files changed, 36 insertions, 1 deletions
diff --git a/cinderclient/client.py b/cinderclient/client.py index fe20a6d..c38469e 100644 --- a/cinderclient/client.py +++ b/cinderclient/client.py @@ -23,6 +23,7 @@ from __future__ import print_function import logging from cinderclient import exceptions +from cinderclient.openstack.common import strutils from cinderclient import utils from keystoneclient import access @@ -229,7 +230,11 @@ class HTTPClient(CinderClientMixin): string_parts.append(header) if 'data' in kwargs: - string_parts.append(" -d '%s'" % (kwargs['data'])) + if "password" in kwargs['data']: + data = strutils.mask_password(kwargs['data']) + else: + data = kwargs['data'] + string_parts.append(" -d '%s'" % (data)) self._logger.debug("\nREQ: %s\n" % "".join(string_parts)) def http_log_resp(self, resp): diff --git a/cinderclient/tests/test_client.py b/cinderclient/tests/test_client.py index 47c4c69..f81cf3d 100644 --- a/cinderclient/tests/test_client.py +++ b/cinderclient/tests/test_client.py @@ -11,6 +11,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +import logging + +import fixtures import cinderclient.client import cinderclient.v1.client @@ -31,3 +34,30 @@ class ClientTest(utils.TestCase): def test_get_client_class_unknown(self): self.assertRaises(cinderclient.exceptions.UnsupportedVersion, cinderclient.client.get_client_class, '0') + + def test_log_req(self): + self.logger = self.useFixture( + fixtures.FakeLogger( + format="%(message)s", + level=logging.DEBUG, + nuke_handlers=True + ) + ) + + kwargs = {} + kwargs['headers'] = {"X-Foo": "bar"} + kwargs['data'] = ('{"auth": {"tenantName": "fakeService",' + ' "passwordCredentials": {"username": "fakeUser",' + ' "password": "fakePassword"}}}') + + cs = cinderclient.client.HTTPClient("user", None, None, + "http://127.0.0.1:5000") + cs.http_log_debug = True + cs.http_log_req('PUT', kwargs) + + output = self.logger.output.split('\n') + + print("JSBRYANT: output is", output) + + self.assertNotIn("fakePassword", output[1]) + self.assertIn("fakeUser", output[1]) |