summaryrefslogtreecommitdiff
path: root/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md')
-rw-r--r--doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md74
1 files changed, 68 insertions, 6 deletions
diff --git a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
index 9a23a115765..dbda889d370 100644
--- a/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
+++ b/doc/administration/troubleshooting/gitlab_rails_cheat_sheet.md
@@ -222,11 +222,12 @@ namespace = Namespace.find_by_full_path("")
```ruby
# ID will be the webhook_id
-WebHookLog.where(web_hook_id: ID).each_slice(ID) do |slice|
- slice.each(&:destroy)
-end
+hook=WebHook.find(ID)
+
+WebHooks::DestroyService.new(current_user).execute(hook)
-WebHook.find(ID).destroy
+#In case the service gets timeout consider removing webhook_logs
+hook.web_hook_logs.limit(BATCH_SIZE).delete_all
```
### Bulk update service integration password for _all_ projects
@@ -285,6 +286,16 @@ GitlabShellWorker.perform_in(0, :remove_repository, p.repository_storage, p.wiki
p.create_wiki ### creates the wiki project on the filesystem
```
+## Issue boards
+
+### In case of issue boards not loading properly and it's getting time out. We need to call the Issue Rebalancing service to fix this
+
+```ruby
+p=Project.find_by_full_path('PROJECT PATH')
+
+IssueRebalancingService.new(p.issues.take).execute
+```
+
## Imports / Exports
```ruby
@@ -411,6 +422,9 @@ user.skip_reconfirmation!
# Active users on the instance, now
User.active.count
+# Users taking a seat on the instance
+License.current.current_active_users_count
+
# The historical max on the instance as of the past year
::HistoricalData.max_historical_user_count
```
@@ -506,6 +520,54 @@ group = Group.find_by_path_or_name('group-name')
group.project_creation_level=0
```
+## SCIM
+
+### Fixing bad SCIM identities
+
+```ruby
+def delete_bad_scim(email, group_path)
+ output = ""
+ u = User.find_by_email(email)
+ uid = u.id
+ g = Group.find_by_full_path(group_path)
+ saml_prov_id = SamlProvider.find_by(group_id: g.id).id
+ saml = Identity.where(user_id: uid, saml_provider_id: saml_prov_id)
+ scim = ScimIdentity.where(user_id: uid , group_id: g.id)
+ if saml[0]
+ saml_eid = saml[0].extern_uid
+ output += "%s," % [email]
+ output += "SAML: %s," % [saml_eid]
+ if scim[0]
+ scim_eid = scim[0].extern_uid
+ output += "SCIM: %s" % [scim_eid]
+ if saml_eid == scim_eid
+ output += " Identities matched, not deleted \n"
+ else
+ scim[0].destroy
+ output += " Deleted \n"
+ end
+ else
+ output = "ERROR No SCIM identify found for: [%s]\n" % [email]
+ puts output
+ return 1
+ end
+ else
+ output = "ERROR No SAML identify found for: [%s]\n" % [email]
+ puts output
+ return 1
+ end
+ puts output
+ return 0
+end
+
+# In case of multiple emails
+emails = [email1, email2]
+
+emails.each do |e|
+ delete_bad_scim(e,'GROUPPATH')
+end
+```
+
## Routes
### Remove redirecting routes
@@ -525,8 +587,8 @@ conflicting_permanent_redirects.destroy_all
### Close a merge request properly (if merged but still marked as open)
```ruby
-p = Project.find_by_full_path('')
-m = project.merge_requests.find_by(iid: )
+p = Project.find_by_full_path('<full/path/to/project>')
+m = p.merge_requests.find_by(iid: <iid>)
u = User.find_by_username('')
MergeRequests::PostMergeService.new(p, u).execute(m)
```