Doctor rake task reports GrafanaIntegration error if Grafana integration is configured on a project level
Summary
Doctor rake task reports GrafanaIntegration error if Grafana integration is configured on a project level
Steps to reproduce
- Configure Grafana for a project via Settings > Monitor > Grafana authentication so that you have some records in the
grafana_integrations
table - Run
sudo gitlab-rake gitlab:doctor:secrets VERBOSE=1
What is the current bug behavior?
Doctor rake task fails with the error:
D, [2021-07-22T11:20:47.766097 #484] DEBUG -- : > Something went wrong for GrafanaIntegration[1].token: private method `token' called for #<GrafanaIntegration:0x00007fd067d0e258>
Did you mean? token=
token?
to_key
I, [2021-07-22T11:20:47.766266 #484] INFO -- : - GrafanaIntegration failures: 1
D, [2021-07-22T11:20:47.766331 #484] DEBUG -- : - GrafanaIntegration[1]: token
What is the expected correct behavior?
Doctor rake task should be completed successfully.
Relevant logs and/or screenshots
n/a
Output of checks
Results of GitLab environment info
Expand for output related to GitLab environment info
System information System: Ubuntu 18.04 Proxy: no Current User: git Using RVM: no Ruby Version: 2.7.2p137 Gem Version: 3.1.4 Bundler Version:2.1.4 Rake Version: 13.0.3 Redis Version: 6.0.14 Git Version: 2.32.0 Sidekiq Version:5.2.9 Go Version: unknown GitLab information Version: 14.1.0-ee Revision: e4567ef4362 Directory: /opt/gitlab/embedded/service/gitlab-rails DB Adapter: PostgreSQL DB Version: 12.6 URL: https://gitlabhost.tld HTTP Clone URL: https://gitlabhost.tld/some-group/some-project.git SSH Clone URL: git@gitlabhost.tld:some-group/some-project.git Elasticsearch: no Geo: no Using LDAP: no Using Omniauth: yes Omniauth Providers: google_oauth2 GitLab Shell Version: 13.19.0 Repository storage paths: - default: /var/opt/gitlab/git-data/repositories GitLab Shell path: /opt/gitlab/embedded/service/gitlab-shell Git: /opt/gitlab/embedded/bin/git
Possible fixes
The issue occurs because in https://gitlab.com/gitlab-org/gitlab/-/blob/v14.1.0-ee/lib/gitlab/doctor/secrets.rb#L74-76 we use public_send
that can call only public methods, but token
method of GrafanaIntegration
model is private: https://gitlab.com/gitlab-org/gitlab/-/blob/v14.1.0-ee/app/models/grafana_integration.rb#L39-41