Snippets

Adaptavist Bitbucket - Max Disk Usage

Created by Jamie Echlin

File MaxDiskUsage.groovy Added

  • Ignore whitespace
  • Hide word diff
+package com.onresolve.stash.groovy.test.listeners.STASH_3850_block_personal
+
+import com.atlassian.sal.api.component.ComponentLocator
+import com.atlassian.stash.event.RepositoryCreationRequestedEvent
+import com.atlassian.stash.project.ProjectType
+import com.atlassian.stash.repository.Repository
+import com.atlassian.stash.repository.RepositoryService
+import com.atlassian.stash.util.Page
+import com.atlassian.stash.util.PageProvider
+import com.atlassian.stash.util.PageRequest
+import com.atlassian.stash.util.PagedIterable
+
+// only allow N personal
+def repositoryService = ComponentLocator.getComponent(RepositoryService)
+def event = event as RepositoryCreationRequestedEvent
+def project = event.repository.project
+
+// allow only 1Gb total size per user
+if (project.type == ProjectType.PERSONAL) {
+    def totalUserSize = new PagedIterable<Repository>(new PageProvider<Repository>() {
+        @Override
+        Page<Repository> get(PageRequest pageRequest) {
+            repositoryService.findByProjectKey(project.key, pageRequest) as Page<Repository>
+        }
+    }, 100).sum { Repository repo ->
+        repositoryService.getSize(repo)
+    }
+
+    if (totalUserSize >= 1024e3) {
+        event.cancel("You can only use 1Gb in personal repository space, which you have exceeded.")
+    }
+}
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.