)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"1f3f74299cddcdc31be78d74310e43bb4938c210","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4bef9d7b_7a65d9fe","updated":"2026-01-28 12:35:54.000000000","message":"Wouldn\u0027t it be better and faster to do this via the API? While database schemas can technically change over time (unlikely as it may be), the API is generally more stable, universal, and stays consistent across versions\n\ncurl -X PUT -H \"Content-Type: application/json\" \\\n-u admin:your_current_password \\\n-d \u0027{\n  \"login\": \"admin1234\",\n  \"name\": \"Admin1234\",\n  \"email\": \"admin@example.com\"\n}\u0027 \\\nhttp://localhost:3000/api/users/1\n\nThis ensures we are following the supported way of updating user data without touching DB","commit_id":"b7e34556fa24bf2ebd5899c368b399f4b24c0cdc"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"762981005f414335f65d7b3bd987147508010e40","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"929e2a69_de0e8e5d","in_reply_to":"144d14b9_1accd665","updated":"2026-02-06 13:54:57.000000000","message":"from what I remember, \n\ngrafana-cli admin reset-admin-password \"NEW_PASSWORD\"\n\nresets the password of the first admin user (ID\u003d1),\ndoes not change the login name,\n\nbut you have to test it :)","commit_id":"b7e34556fa24bf2ebd5899c368b399f4b24c0cdc"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"89633d90f92366c285ad42ab2e8be8728cfc43ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"144d14b9_1accd665","in_reply_to":"4bef9d7b_7a65d9fe","updated":"2026-02-06 13:46:54.000000000","message":"Thanks, this is a good suggestion. We can even omit the name and email fields to leave them unchanged.\n\nHowever, we still need a way to know the current username. The Kolla configuration would have the new one only. I still plan to use a SQL query to get this information.","commit_id":"b7e34556fa24bf2ebd5899c368b399f4b24c0cdc"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"cf7a3f4b3d171189dadee9a3b7a8536e078ee28a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"721715fe_28335918","in_reply_to":"929e2a69_de0e8e5d","updated":"2026-02-06 14:26:51.000000000","message":"I checked this first, it only allows changing the password.","commit_id":"b7e34556fa24bf2ebd5899c368b399f4b24c0cdc"}],"ansible/roles/grafana/tasks/post_config.yml":[{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"8a7f92f1639896f7954c7a5a1fa845869a158028","unresolved":true,"context_lines":[{"line_number":48,"context_line":"      login_password: \"{{ grafana_database_password }}\""},{"line_number":49,"context_line":"      login_port: \"{{ database_port }}\""},{"line_number":50,"context_line":"      login_user: \"{{ grafana_database_user }}\""},{"line_number":51,"context_line":"      query: \"UPDATE user SET login \u003d \u0027{{ grafana_admin_username }}\u0027 WHERE id \u003d 1\""},{"line_number":52,"context_line":"  run_once: true"},{"line_number":53,"context_line":"  when: grafana_admin_username !\u003d current_grafana_admin_user.query_result[0][0][\u0027login\u0027]"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"a00eb40d_a0fd5f90","line":51,"range":{"start_line":51,"start_character":42,"end_line":51,"end_character":65},"updated":"2026-01-29 10:33:15.000000000","message":"The SQL query is built using string interpolation, which is unsafe.\ngrafana_admin_username may contain quotes or special characters and break\nthe query.","commit_id":"4706c964280eaafe3c221a306fef0a6d2a99e0c3"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"107d4613fd736eb43b13c1fcff260f38ef6d1b35","unresolved":false,"context_lines":[{"line_number":48,"context_line":"      login_password: \"{{ grafana_database_password }}\""},{"line_number":49,"context_line":"      login_port: \"{{ database_port }}\""},{"line_number":50,"context_line":"      login_user: \"{{ grafana_database_user }}\""},{"line_number":51,"context_line":"      query: \"UPDATE user SET login \u003d \u0027{{ grafana_admin_username }}\u0027 WHERE id \u003d 1\""},{"line_number":52,"context_line":"  run_once: true"},{"line_number":53,"context_line":"  when: grafana_admin_username !\u003d current_grafana_admin_user.query_result[0][0][\u0027login\u0027]"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"380cdaac_8ca113c8","line":51,"range":{"start_line":51,"start_character":42,"end_line":51,"end_character":65},"in_reply_to":"a00eb40d_a0fd5f90","updated":"2026-02-06 14:27:38.000000000","message":"I have replaced the SQL UPDATE query by an HTTP query.","commit_id":"4706c964280eaafe3c221a306fef0a6d2a99e0c3"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"40f5aabdbee7f43d154b14c62788803fbb41e8e8","unresolved":true,"context_lines":[{"line_number":33,"context_line":"      login_password: \"{{ grafana_database_password }}\""},{"line_number":34,"context_line":"      login_port: \"{{ database_port }}\""},{"line_number":35,"context_line":"      login_user: \"{{ grafana_database_user }}\""},{"line_number":36,"context_line":"      query: \"SELECT login FROM user WHERE id \u003d 1\""},{"line_number":37,"context_line":"  register: current_grafana_admin_user"},{"line_number":38,"context_line":"  run_once: true"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"431c4562_652fe64b","line":36,"updated":"2026-04-27 08:34:20.000000000","message":"Can we be certain that this is always 1?","commit_id":"523e046f573238c0c2b4f5924aafe6c22aed3926"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"40f5aabdbee7f43d154b14c62788803fbb41e8e8","unresolved":true,"context_lines":[{"line_number":33,"context_line":"      login_password: \"{{ grafana_database_password }}\""},{"line_number":34,"context_line":"      login_port: \"{{ database_port }}\""},{"line_number":35,"context_line":"      login_user: \"{{ grafana_database_user }}\""},{"line_number":36,"context_line":"      query: \"SELECT login FROM user WHERE id \u003d 1\""},{"line_number":37,"context_line":"  register: current_grafana_admin_user"},{"line_number":38,"context_line":"  run_once: true"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8484a939_4905e784","line":36,"updated":"2026-04-27 08:34:20.000000000","message":"Unfortunately I don\u0027t think that we can rely on id\u003d1. Eg. in my dev env I see:\n\n```\nMariaDB [grafana]\u003e SELECT login FROM user WHERE id \u003d 1;\nEmpty set (0.002 sec)\n\nMariaDB [grafana]\u003e SELECT login FROM user WHERE id \u003d 3;\n+---------------------+\n| login               |\n+---------------------+\n| grafana_local_admin |\n+---------------------+\n1 row in set (0.001 sec)\n```\n\nI think we need to change it to something less brittle. Eg. you can get the id for a user via the API:\n\n\n```\n curl -X GET \"http://192.168.37.5:3000/api/users/lookup?loginOrEmail\u003dgrafana_local_admin\"      -u grafana_local_admin:r4ptor\n{\"id\":3,\"uid\":\"afja1qmy8pmv4c\",\"email\":\"admin@localhost\",\"name\":\"\",\"login\":\"grafana_local_admin\",\"theme\":\"\",\"orgId\":1,\"isGrafanaAdmin\":true,\"\nisDisabled\":false,\"isExternal\":false,\"isExternallySynced\":false,\"isGrafanaAdminExternallySynced\":false,\"authLabels\":null,\"updatedAt\":\"2026-04\n-16T16:20:02Z\",\"createdAt\":\"2026-04-16T16:20:02Z\",\"avatarUrl\":\"\",\"isProvisioned\":false}\n```","commit_id":"523e046f573238c0c2b4f5924aafe6c22aed3926"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"07c5f1c6f56e9c6ee9275754693f45872016ebc0","unresolved":false,"context_lines":[{"line_number":33,"context_line":"      login_password: \"{{ grafana_database_password }}\""},{"line_number":34,"context_line":"      login_port: \"{{ database_port }}\""},{"line_number":35,"context_line":"      login_user: \"{{ grafana_database_user }}\""},{"line_number":36,"context_line":"      query: \"SELECT login FROM user WHERE id \u003d 1\""},{"line_number":37,"context_line":"  register: current_grafana_admin_user"},{"line_number":38,"context_line":"  run_once: true"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"4ce2e3f3_6c27ce73","line":36,"in_reply_to":"431c4562_652fe64b","updated":"2026-04-27 08:35:04.000000000","message":"sorry, ignore, checked it below.","commit_id":"523e046f573238c0c2b4f5924aafe6c22aed3926"}]}
