Merge "Mask passwords in client debug output"

This commit is contained in:
Jenkins
2014-08-02 16:31:32 +00:00
committed by Gerrit Code Review
2 changed files with 36 additions and 1 deletions

View File

@@ -23,6 +23,7 @@ from __future__ import print_function
import logging import logging
from cinderclient import exceptions from cinderclient import exceptions
from cinderclient.openstack.common import strutils
from cinderclient import utils from cinderclient import utils
from keystoneclient import access from keystoneclient import access
@@ -229,7 +230,11 @@ class HTTPClient(CinderClientMixin):
string_parts.append(header) string_parts.append(header)
if 'data' in kwargs: 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)) self._logger.debug("\nREQ: %s\n" % "".join(string_parts))
def http_log_resp(self, resp): def http_log_resp(self, resp):

View File

@@ -11,6 +11,9 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import logging
import fixtures
import cinderclient.client import cinderclient.client
import cinderclient.v1.client import cinderclient.v1.client
@@ -31,3 +34,30 @@ class ClientTest(utils.TestCase):
def test_get_client_class_unknown(self): def test_get_client_class_unknown(self):
self.assertRaises(cinderclient.exceptions.UnsupportedVersion, self.assertRaises(cinderclient.exceptions.UnsupportedVersion,
cinderclient.client.get_client_class, '0') 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])