Commit e6679008 authored by Mario de la Ossa's avatar Mario de la Ossa

UI for uploads counting as storage

Give some visibility on how much space uploads are taking per
namespace/group/etc.
parent 31d663ee
...@@ -15,9 +15,11 @@ module StorageHelper ...@@ -15,9 +15,11 @@ module StorageHelper
counter_wikis: storage_counter(statistics.wiki_size), counter_wikis: storage_counter(statistics.wiki_size),
counter_build_artifacts: storage_counter(statistics.build_artifacts_size), counter_build_artifacts: storage_counter(statistics.build_artifacts_size),
counter_lfs_objects: storage_counter(statistics.lfs_objects_size), counter_lfs_objects: storage_counter(statistics.lfs_objects_size),
counter_snippets: storage_counter(statistics.snippets_size) counter_snippets: storage_counter(statistics.snippets_size),
counter_packages: storage_counter(statistics.packages_size),
counter_uploads: storage_counter(statistics.uploads_size)
} }
_("Repository: %{counter_repositories} / Wikis: %{counter_wikis} / Build Artifacts: %{counter_build_artifacts} / LFS: %{counter_lfs_objects} / Snippets: %{counter_snippets}") % counters _("Repository: %{counter_repositories} / Wikis: %{counter_wikis} / Build Artifacts: %{counter_build_artifacts} / LFS: %{counter_lfs_objects} / Snippets: %{counter_snippets} / Packages: %{counter_packages} / Uploads: %{counter_uploads}") % counters
end end
end end
...@@ -84,6 +84,7 @@ export default { ...@@ -84,6 +84,7 @@ export default {
packagesSize: s__('UsageQuota|Packages'), packagesSize: s__('UsageQuota|Packages'),
wikiSize: s__('UsageQuota|Wiki'), wikiSize: s__('UsageQuota|Wiki'),
snippetsSize: s__('UsageQuota|Snippets'), snippetsSize: s__('UsageQuota|Snippets'),
uploadsSize: s__('UsageQuota|Uploads'),
}, },
}; };
</script> </script>
......
...@@ -31,6 +31,7 @@ export default { ...@@ -31,6 +31,7 @@ export default {
storageSize, storageSize,
wikiSize, wikiSize,
snippetsSize, snippetsSize,
uploadsSize,
} = this.rootStorageStatistics; } = this.rootStorageStatistics;
const artifactsSize = buildArtifactsSize + pipelineArtifactsSize; const artifactsSize = buildArtifactsSize + pipelineArtifactsSize;
...@@ -76,6 +77,12 @@ export default { ...@@ -76,6 +77,12 @@ export default {
class: 'gl-bg-data-viz-orange-800', class: 'gl-bg-data-viz-orange-800',
size: snippetsSize, size: snippetsSize,
}, },
{
name: s__('UsageQuota|Uploads'),
style: this.usageStyle(this.barRatio(uploadsSize)),
class: 'gl-bg-data-viz-aqua-700',
size: uploadsSize,
},
] ]
.filter(data => data.size !== 0) .filter(data => data.size !== 0)
.sort((a, b) => b.size - a.size); .sort((a, b) => b.size - a.size);
......
...@@ -27,6 +27,7 @@ query getStorageCounter( ...@@ -27,6 +27,7 @@ query getStorageCounter(
packagesSize packagesSize
wikiSize wikiSize
snippetsSize snippetsSize
uploadsSize
} }
projects( projects(
includeSubgroups: true includeSubgroups: true
...@@ -54,6 +55,7 @@ query getStorageCounter( ...@@ -54,6 +55,7 @@ query getStorageCounter(
packagesSize packagesSize
wikiSize wikiSize
snippetsSize snippetsSize
uploadsSize
} }
} }
pageInfo { pageInfo {
......
---
title: Show uploads size in storage usage breakdown
merge_request: 47113
author:
type: added
...@@ -31,6 +31,7 @@ describe('Storage Counter usage graph component', () => { ...@@ -31,6 +31,7 @@ describe('Storage Counter usage graph component', () => {
pipelineArtifactsSize: 500, pipelineArtifactsSize: 500,
snippetsSize: 2000, snippetsSize: 2000,
storageSize: 17000, storageSize: 17000,
uploadsSize: 1000,
}, },
limit: 2000, limit: 2000,
}; };
...@@ -52,6 +53,7 @@ describe('Storage Counter usage graph component', () => { ...@@ -52,6 +53,7 @@ describe('Storage Counter usage graph component', () => {
repositorySize, repositorySize,
wikiSize, wikiSize,
snippetsSize, snippetsSize,
uploadsSize,
} = data.rootStorageStatistics; } = data.rootStorageStatistics;
expect(types.at(0).text()).toMatchInterpolatedText(`Wikis ${numberToHumanSize(wikiSize)}`); expect(types.at(0).text()).toMatchInterpolatedText(`Wikis ${numberToHumanSize(wikiSize)}`);
...@@ -70,6 +72,7 @@ describe('Storage Counter usage graph component', () => { ...@@ -70,6 +72,7 @@ describe('Storage Counter usage graph component', () => {
expect(types.at(5).text()).toMatchInterpolatedText( expect(types.at(5).text()).toMatchInterpolatedText(
`Artifacts ${numberToHumanSize(buildArtifactsSize + pipelineArtifactsSize)}`, `Artifacts ${numberToHumanSize(buildArtifactsSize + pipelineArtifactsSize)}`,
); );
expect(types.at(6).text()).toMatchInterpolatedText(`Uploads ${numberToHumanSize(uploadsSize)}`);
}); });
describe('when storage type is not used', () => { describe('when storage type is not used', () => {
...@@ -108,6 +111,7 @@ describe('Storage Counter usage graph component', () => { ...@@ -108,6 +111,7 @@ describe('Storage Counter usage graph component', () => {
'0.11764705882352941', '0.11764705882352941',
'0.11764705882352941', '0.11764705882352941',
'0.058823529411764705', '0.058823529411764705',
'0.058823529411764705',
]); ]);
}); });
}); });
...@@ -126,6 +130,7 @@ describe('Storage Counter usage graph component', () => { ...@@ -126,6 +130,7 @@ describe('Storage Counter usage graph component', () => {
'0.11764705882352941', '0.11764705882352941',
'0.11764705882352941', '0.11764705882352941',
'0.058823529411764705', '0.058823529411764705',
'0.058823529411764705',
]); ]);
}); });
}); });
......
...@@ -22989,7 +22989,7 @@ msgstr "" ...@@ -22989,7 +22989,7 @@ msgstr ""
msgid "Repository synchronization concurrency limit" msgid "Repository synchronization concurrency limit"
msgstr "" msgstr ""
msgid "Repository: %{counter_repositories} / Wikis: %{counter_wikis} / Build Artifacts: %{counter_build_artifacts} / LFS: %{counter_lfs_objects} / Snippets: %{counter_snippets}" msgid "Repository: %{counter_repositories} / Wikis: %{counter_wikis} / Build Artifacts: %{counter_build_artifacts} / LFS: %{counter_lfs_objects} / Snippets: %{counter_snippets} / Packages: %{counter_packages} / Uploads: %{counter_uploads}"
msgstr "" msgstr ""
msgid "RepositorySettingsAccessLevel|Select" msgid "RepositorySettingsAccessLevel|Select"
...@@ -29366,6 +29366,9 @@ msgstr "" ...@@ -29366,6 +29366,9 @@ msgstr ""
msgid "UsageQuota|Unlimited" msgid "UsageQuota|Unlimited"
msgstr "" msgstr ""
msgid "UsageQuota|Uploads"
msgstr ""
msgid "UsageQuota|Usage" msgid "UsageQuota|Usage"
msgstr "" msgstr ""
......
...@@ -15,7 +15,7 @@ RSpec.describe "Admin > Admin sees project statistics" do ...@@ -15,7 +15,7 @@ RSpec.describe "Admin > Admin sees project statistics" do
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
it "shows project statistics" do it "shows project statistics" do
expect(page).to have_content("Storage: 0 Bytes (Repository: 0 Bytes / Wikis: 0 Bytes / Build Artifacts: 0 Bytes / LFS: 0 Bytes / Snippets: 0 Bytes)") expect(page).to have_content("Storage: 0 Bytes (Repository: 0 Bytes / Wikis: 0 Bytes / Build Artifacts: 0 Bytes / LFS: 0 Bytes / Snippets: 0 Bytes / Packages: 0 Bytes / Uploads: 0 Bytes)")
end end
end end
......
...@@ -32,10 +32,12 @@ RSpec.describe StorageHelper do ...@@ -32,10 +32,12 @@ RSpec.describe StorageHelper do
wiki_size: 10.bytes, wiki_size: 10.bytes,
lfs_objects_size: 20.gigabytes, lfs_objects_size: 20.gigabytes,
build_artifacts_size: 30.megabytes, build_artifacts_size: 30.megabytes,
snippets_size: 40.megabytes)) snippets_size: 40.megabytes,
packages_size: 12.megabytes,
uploads_size: 15.megabytes))
end end
let(:message) { 'Repository: 10 KB / Wikis: 10 Bytes / Build Artifacts: 30 MB / LFS: 20 GB / Snippets: 40 MB' } let(:message) { 'Repository: 10 KB / Wikis: 10 Bytes / Build Artifacts: 30 MB / LFS: 20 GB / Snippets: 40 MB / Packages: 12 MB / Uploads: 15 MB' }
it 'works on ProjectStatistics' do it 'works on ProjectStatistics' do
expect(helper.storage_counters_details(project.statistics)).to eq(message) expect(helper.storage_counters_details(project.statistics)).to eq(message)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment