Merge "Mask passwords in client debug output"
This commit is contained in:
@@ -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):
|
||||||
|
@@ -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])
|
||||||
|
Reference in New Issue
Block a user