diff --git a/config.py b/config.py index 2482f31cf..221f808dd 100644 --- a/config.py +++ b/config.py @@ -188,4 +188,4 @@ class DefaultConfig(object): LOG_ARCHIVE_PATH = 'logarchive/' # For enterprise: - MAXIMUM_CONTAINER_USAGE = 20 + MAXIMUM_REPOSITORY_USAGE = 20 diff --git a/data/model/legacy.py b/data/model/legacy.py index 91d1d2643..34be41491 100644 --- a/data/model/legacy.py +++ b/data/model/legacy.py @@ -3,7 +3,7 @@ import logging import dateutil.parser import json -from datetime import datetime, timedelta +from datetime import datetime, timedelta, date from data.database import (User, Repository, Image, AccessToken, Role, RepositoryPermission, Visibility, RepositoryTag, EmailConfirmation, FederatedLogin, @@ -2225,11 +2225,13 @@ def confirm_team_invite(code, user): def get_repository_usage(): + one_month_ago = date.today() - timedelta(weeks=4) repo_pull = LogEntryKind.get(name = 'pull_repo') repo_verb = LogEntryKind.get(name = 'repo_verb') return (LogEntry.select() .where((LogEntry.kind == repo_pull) | (LogEntry.kind == repo_verb)) .where(~(LogEntry.repository >> None)) + .where(LogEntry.datetime >= one_month_ago) .group_by(LogEntry.ip) .group_by(LogEntry.repository) .count()) diff --git a/endpoints/api/superuser.py b/endpoints/api/superuser.py index 3467add8b..4e99fe128 100644 --- a/endpoints/api/superuser.py +++ b/endpoints/api/superuser.py @@ -64,7 +64,7 @@ class UsageInformation(ApiResource): if SuperUserPermission().can(): return { 'usage': model.get_repository_usage(), - 'allowed': app.config.get('MAXIMUM_CONTAINER_USAGE', 20) + 'allowed': app.config.get('MAXIMUM_REPOSITORY_USAGE', 20) } abort(403) diff --git a/static/partials/super-user.html b/static/partials/super-user.html index 163d5a567..1d126b342 100644 --- a/static/partials/super-user.html +++ b/static/partials/super-user.html @@ -34,21 +34,21 @@
+ current="systemUsage.usage" usage-title="Deployed Repositories">
- You have deployed more containers than your plan allows. Please + You have deployed more repositories than your plan allows. Please upgrade your subscription by contacting CoreOS Sales.
- You are at your current plan's number of allowed containers. It might be time to think about + You are at your current plan's number of allowed repositories. It might be time to think about upgrading your subscription by contacting CoreOS Sales.
- You are nearing the number of allowed deployed containers. It might be time to think about + You are nearing the number of allowed deployed repositories. It might be time to think about upgrading your subscription by contacting CoreOS Sales.
diff --git a/test/test_api_usage.py b/test/test_api_usage.py index 4b853d989..1596c81c7 100644 --- a/test/test_api_usage.py +++ b/test/test_api_usage.py @@ -43,7 +43,8 @@ from endpoints.api.organization import (OrganizationList, OrganizationMember, from endpoints.api.repository import RepositoryList, RepositoryVisibility, Repository from endpoints.api.permission import (RepositoryUserPermission, RepositoryTeamPermission, RepositoryTeamPermissionList, RepositoryUserPermissionList) -from endpoints.api.superuser import SuperUserLogs, SuperUserList, SuperUserManagement +from endpoints.api.superuser import (SuperUserLogs, SuperUserList, SuperUserManagement, + UsageInformation) try: app.register_blueprint(api_bp, url_prefix='/api') @@ -2358,6 +2359,15 @@ class TestSuperUserList(ApiTestCase): assert len(json['users']) > 0 +class TestUsageInformation(ApiTestCase): + def test_get_usage(self): + self.login(ADMIN_ACCESS_USER) + json = self.getJsonResponse(UsageInformation) + + assert 'usage' in json + assert 'allowed' in json + + class TestSuperUserManagement(ApiTestCase): def test_get_user(self): self.login(ADMIN_ACCESS_USER)