)]}'
{"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1af56036fa82b841d501aa82b42058a22aab2ef2","unresolved":false,"context_lines":[{"line_number":117,"context_line":"def upload_credentials(node_dict):"},{"line_number":118,"context_line":"    if CONF.credentials.use_credentials_storage:"},{"line_number":119,"context_line":"        blob \u003d {}"},{"line_number":120,"context_line":"        driver_info \u003d node_dict[\u0027driver_info\u0027]"},{"line_number":121,"context_line":"        for field in cred_fields.CREDENTIALS_FIELDS[node_dict[\u0027driver\u0027]]:"},{"line_number":122,"context_line":"            value \u003d driver_info.get(field)"},{"line_number":123,"context_line":"            if value is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_5af1f093","line":120,"updated":"2015-05-25 09:39:11.000000000","message":"Why not \u0027driver_internal_info\u0027?","commit_id":"ecd8d622d8ec852c69d412b7447e6956fda98752"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ddda603f9084d17bd7656e4b2444224f572adaa6","unresolved":false,"context_lines":[{"line_number":117,"context_line":"def upload_credentials(node_dict):"},{"line_number":118,"context_line":"    if CONF.credentials.use_credentials_storage:"},{"line_number":119,"context_line":"        blob \u003d {}"},{"line_number":120,"context_line":"        driver_info \u003d node_dict[\u0027driver_info\u0027]"},{"line_number":121,"context_line":"        for field in cred_fields.CREDENTIALS_FIELDS[node_dict[\u0027driver\u0027]]:"},{"line_number":122,"context_line":"            value \u003d driver_info.get(field)"},{"line_number":123,"context_line":"            if value is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_54dc0318","line":120,"in_reply_to":"7a016987_5af1f093","updated":"2015-05-26 13:45:13.000000000","message":"Done","commit_id":"ecd8d622d8ec852c69d412b7447e6956fda98752"}],"ironic/common/credentials_factory.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1af56036fa82b841d501aa82b42058a22aab2ef2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                help\u003d\u0027Whether credential storage will be used or not, \u0027"},{"line_number":24,"context_line":"                     \u0027defaults to False.\u0027"},{"line_number":25,"context_line":"                ),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027credentials_provider\u0027,"},{"line_number":27,"context_line":"               default\u003d\u0027keystone\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027Credentials provider to use. \"keystone\" uses Keystone to \u0027"},{"line_number":29,"context_line":"                    \u0027store credentials. \"keystone\" credentials provider \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_bab104e2","line":26,"updated":"2015-05-25 09:39:11.000000000","message":"How about \u0027none\u0027 option here and remove option above?","commit_id":"ecd8d622d8ec852c69d412b7447e6956fda98752"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ddda603f9084d17bd7656e4b2444224f572adaa6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"                help\u003d\u0027Whether credential storage will be used or not, \u0027"},{"line_number":24,"context_line":"                     \u0027defaults to False.\u0027"},{"line_number":25,"context_line":"                ),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027credentials_provider\u0027,"},{"line_number":27,"context_line":"               default\u003d\u0027keystone\u0027,"},{"line_number":28,"context_line":"               help\u003d\u0027Credentials provider to use. \"keystone\" uses Keystone to \u0027"},{"line_number":29,"context_line":"                    \u0027store credentials. \"keystone\" credentials provider \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_14e68be8","line":26,"in_reply_to":"7a016987_bab104e2","updated":"2015-05-26 13:45:13.000000000","message":"Done","commit_id":"ecd8d622d8ec852c69d412b7447e6956fda98752"}],"ironic/credentials/drivers_credentials_fields.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1af56036fa82b841d501aa82b42058a22aab2ef2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"CREDENTIALS_FIELDS \u003d {"},{"line_number":14,"context_line":"    \u0027pxe_ssh\u0027: [\u0027ssh_username\u0027, \u0027ssh_key_filename\u0027, \u0027ssh_key_contents\u0027,"},{"line_number":15,"context_line":"                \u0027ssh_password\u0027],"},{"line_number":16,"context_line":"    \u0027agent_ssh\u0027: [\u0027ssh_username\u0027, \u0027ssh_key_filename\u0027, \u0027ssh_key_contents\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_dac840aa","line":13,"updated":"2015-05-25 09:39:11.000000000","message":"IMO bad idea to collect this info in one module. This can be defined in drivers, and you can use  _DRIVER_PROPERTIES in driver.py for example. And not needed change all of drivers in this one patch. Another idea: use fields name agreement for credentials.","commit_id":"ecd8d622d8ec852c69d412b7447e6956fda98752"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"ddda603f9084d17bd7656e4b2444224f572adaa6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"CREDENTIALS_FIELDS \u003d {"},{"line_number":14,"context_line":"    \u0027pxe_ssh\u0027: [\u0027ssh_username\u0027, \u0027ssh_key_filename\u0027, \u0027ssh_key_contents\u0027,"},{"line_number":15,"context_line":"                \u0027ssh_password\u0027],"},{"line_number":16,"context_line":"    \u0027agent_ssh\u0027: [\u0027ssh_username\u0027, \u0027ssh_key_filename\u0027, \u0027ssh_key_contents\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_d4d0f3f9","line":13,"in_reply_to":"7a016987_dac840aa","updated":"2015-05-26 13:45:13.000000000","message":"Done","commit_id":"ecd8d622d8ec852c69d412b7447e6956fda98752"}]}
