)]}'
{"nova/compute/api.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"031800379d949df5bca6d0258829cf5815ea0bb7","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            CELLS \u003d objects.CellMappingList.get_all(context)"},{"line_number":2527,"context_line":"            LOG.debug(\u0027Found %(count)i cells: %(cells)s\u0027,"},{"line_number":2528,"context_line":"                      dict(count\u003dlen(CELLS),"},{"line_number":2529,"context_line":"                           cells\u003d\u0027, \u0027.join([c.name or c.uuid for c in CELLS])))"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"        if not CELLS:"},{"line_number":2532,"context_line":"            LOG.error(_LE(\u0027No cells are configured, unable to list instances\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_a12bb232","line":2529,"updated":"2017-03-07 00:56:24.000000000","message":"I think placing a whole CellMapping object into a log message is an easy mistake for anyone to make, so I\u0027m thinking it\u0027s probably worth it to have a special __repr__ for CellMapping to redact database_connection and transport_url by default. So that a LOG.debug(\u0027%s\u0027, CellMapping) wouldn\u0027t end up logging passwords.","commit_id":"eb16247bd63239896d6c4e00629c40e3c3fd4cd4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"233691a998f2b894c4b6b03c118315bf98e022a5","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            CELLS \u003d objects.CellMappingList.get_all(context)"},{"line_number":2527,"context_line":"            LOG.debug(\u0027Found %(count)i cells: %(cells)s\u0027,"},{"line_number":2528,"context_line":"                      dict(count\u003dlen(CELLS),"},{"line_number":2529,"context_line":"                           cells\u003d\u0027, \u0027.join([c.name or c.uuid for c in CELLS])))"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"        if not CELLS:"},{"line_number":2532,"context_line":"            LOG.error(_LE(\u0027No cells are configured, unable to list instances\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_81e22e9e","line":2529,"in_reply_to":"9a30ddce_2126e216","updated":"2017-03-07 01:04:56.000000000","message":"Oh, so when you first logged this, you actually wanted to see the db and mq urls while debugging? I didn\u0027t realize that.","commit_id":"eb16247bd63239896d6c4e00629c40e3c3fd4cd4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9e281a4bdd0d3551195a5e8b57e664424ed79906","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            CELLS \u003d objects.CellMappingList.get_all(context)"},{"line_number":2527,"context_line":"            LOG.debug(\u0027Found %(count)i cells: %(cells)s\u0027,"},{"line_number":2528,"context_line":"                      dict(count\u003dlen(CELLS),"},{"line_number":2529,"context_line":"                           cells\u003d\u0027, \u0027.join([c.name or c.uuid for c in CELLS])))"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"        if not CELLS:"},{"line_number":2532,"context_line":"            LOG.error(_LE(\u0027No cells are configured, unable to list instances\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_c167c623","line":2529,"in_reply_to":"9a30ddce_81e22e9e","updated":"2017-03-07 01:09:21.000000000","message":"Yeah it was the only way I was able to tease out places where we had gotten two of the same cell, or were getting different connections on subsequent runs, etc. I just didn\u0027t really intend to (or think about) logging that level of detail on everyone\u0027s system. It was actually useful when debugging one of the TripleO failures, but it\u0027s not worth the leak of course. However, having the name or uuid is definitely still useful, for example to see that we\u0027re only iterating over Cell0 or something like that.","commit_id":"eb16247bd63239896d6c4e00629c40e3c3fd4cd4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5e90558df3821de371c5012c8080b00409d18a6","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            CELLS \u003d objects.CellMappingList.get_all(context)"},{"line_number":2527,"context_line":"            LOG.debug(\u0027Found %(count)i cells: %(cells)s\u0027,"},{"line_number":2528,"context_line":"                      dict(count\u003dlen(CELLS),"},{"line_number":2529,"context_line":"                           cells\u003d\u0027, \u0027.join([c.name or c.uuid for c in CELLS])))"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"        if not CELLS:"},{"line_number":2532,"context_line":"            LOG.error(_LE(\u0027No cells are configured, unable to list instances\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_2126e216","line":2529,"in_reply_to":"9a30ddce_a12bb232","updated":"2017-03-07 01:00:21.000000000","message":"I dunno, the reason this was here is that I used it extensively while making the tests work. If we did, I\u0027d have to undo that in debug print statements. Plus, it\u0027s an OsloVersionedObject, so I think people expect it to have a specific behavior when stringified.","commit_id":"eb16247bd63239896d6c4e00629c40e3c3fd4cd4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4acab908977df71f7a4c28ebaeccafc427fe02d","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            CELLS \u003d objects.CellMappingList.get_all(context)"},{"line_number":2527,"context_line":"            LOG.debug(\u0027Found %(count)i cells: %(cells)s\u0027,"},{"line_number":2528,"context_line":"                      dict(count\u003dlen(CELLS),"},{"line_number":2529,"context_line":"                           cells\u003d\u0027, \u0027.join([c.name or c.uuid for c in CELLS])))"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"        if not CELLS:"},{"line_number":2532,"context_line":"            LOG.error(_LE(\u0027No cells are configured, unable to list instances\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_d32a377e","line":2529,"in_reply_to":"9a30ddce_bc675524","updated":"2017-03-07 02:22:24.000000000","message":"Confirmed that we have to teach mask_password about URLs:\n\n\u003e\u003e\u003e from oslo_utils import strutils\n\u003e\u003e\u003e strutils.mask_password(mapping.transport_url)\nu\u0027fake://admin:password@localhost:9000/\u0027\n\u003e\u003e\u003e","commit_id":"eb16247bd63239896d6c4e00629c40e3c3fd4cd4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1739d6b1e945334bb4f052fb15a8b77cccc120fd","unresolved":false,"context_lines":[{"line_number":2526,"context_line":"            CELLS \u003d objects.CellMappingList.get_all(context)"},{"line_number":2527,"context_line":"            LOG.debug(\u0027Found %(count)i cells: %(cells)s\u0027,"},{"line_number":2528,"context_line":"                      dict(count\u003dlen(CELLS),"},{"line_number":2529,"context_line":"                           cells\u003d\u0027, \u0027.join([c.name or c.uuid for c in CELLS])))"},{"line_number":2530,"context_line":""},{"line_number":2531,"context_line":"        if not CELLS:"},{"line_number":2532,"context_line":"            LOG.error(_LE(\u0027No cells are configured, unable to list instances\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_bc675524","line":2529,"in_reply_to":"9a30ddce_c167c623","updated":"2017-03-07 01:46:59.000000000","message":"We should have used the SensitiveString field on the CellMapping transport and db connection fields:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/cell_mapping.py#L31-L32\n\nhttps://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py#L886\n\nwe still could, it\u0027d be backward compatible since SensitiveString is a String, the only difference is it masks the value of passwords when stringified:\n\nhttps://github.com/openstack/oslo.versionedobjects/blob/master/oslo_versionedobjects/fields.py#L282\n\nHowever, I\u0027m not sure that mask_password will handle the format of the credentials in these URL fields...","commit_id":"eb16247bd63239896d6c4e00629c40e3c3fd4cd4"}]}
