Merge pull request #679 from coreos-inc/python-registry-v2-delfix
Fix deletion of repos and users with V2 stuff
This commit is contained in:
commit
82e4adc6ca
3 changed files with 15 additions and 4 deletions
|
@ -7,8 +7,8 @@ from data.model import (DataModelException, tag, db_transaction, storage, image,
|
||||||
_basequery, config)
|
_basequery, config)
|
||||||
from data.database import (Repository, Namespace, RepositoryTag, Star, Image, ImageStorage, User,
|
from data.database import (Repository, Namespace, RepositoryTag, Star, Image, ImageStorage, User,
|
||||||
Visibility, RepositoryPermission, TupleSelector, RepositoryActionCount,
|
Visibility, RepositoryPermission, TupleSelector, RepositoryActionCount,
|
||||||
Role, RepositoryAuthorizedEmail, db_for_update, get_epoch_timestamp,
|
Role, RepositoryAuthorizedEmail, TagManifest, db_for_update,
|
||||||
db_random_func)
|
get_epoch_timestamp, db_random_func)
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -43,6 +43,12 @@ def _purge_all_repository_tags(namespace_name, repository_name):
|
||||||
except Repository.DoesNotExist:
|
except Repository.DoesNotExist:
|
||||||
raise DataModelException('Invalid repository \'%s/%s\'' %
|
raise DataModelException('Invalid repository \'%s/%s\'' %
|
||||||
(namespace_name, repository_name))
|
(namespace_name, repository_name))
|
||||||
|
|
||||||
|
# Delete all manifests.
|
||||||
|
repo_tags = RepositoryTag.select().where(RepositoryTag.repository == repo.id)
|
||||||
|
TagManifest.delete().where(TagManifest.tag << repo_tags).execute()
|
||||||
|
|
||||||
|
# Delete all tags.
|
||||||
RepositoryTag.delete().where(RepositoryTag.repository == repo.id).execute()
|
RepositoryTag.delete().where(RepositoryTag.repository == repo.id).execute()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -650,9 +650,12 @@ def detach_external_login(user, service_name):
|
||||||
|
|
||||||
|
|
||||||
def delete_user(user):
|
def delete_user(user):
|
||||||
user.delete_instance(recursive=True, delete_nullable=True)
|
# Delete any repositories under the user's namespace.
|
||||||
|
for repo in list(Repository.select().where(Repository.namespace_user == user)):
|
||||||
|
repository.purge_repository(user.username, repo.name)
|
||||||
|
|
||||||
# TODO: also delete any repository data associated
|
# Delete the user itself.
|
||||||
|
user.delete_instance(recursive=True, delete_nullable=True)
|
||||||
|
|
||||||
|
|
||||||
def get_pull_credentials(robotname):
|
def get_pull_credentials(robotname):
|
||||||
|
|
|
@ -21,6 +21,7 @@ from data.database import (db, all_models, Role, TeamRole, Visibility, LoginServ
|
||||||
from data import model
|
from data import model
|
||||||
from app import app, storage as store
|
from app import app, storage as store
|
||||||
from storage.basestorage import StoragePaths
|
from storage.basestorage import StoragePaths
|
||||||
|
from endpoints.v2.manifest import _generate_and_store_manifest
|
||||||
|
|
||||||
from workers import repositoryactioncounter
|
from workers import repositoryactioncounter
|
||||||
|
|
||||||
|
@ -132,6 +133,7 @@ def __create_subtree(repo, structure, creator_username, parent, tag_map):
|
||||||
new_tag = model.tag.create_or_update_tag(repo.namespace_user.username, repo.name, tag_name,
|
new_tag = model.tag.create_or_update_tag(repo.namespace_user.username, repo.name, tag_name,
|
||||||
new_image.docker_image_id)
|
new_image.docker_image_id)
|
||||||
|
|
||||||
|
_generate_and_store_manifest(repo.namespace_user.username, repo.name, tag_name)
|
||||||
tag_map[tag_name] = new_tag
|
tag_map[tag_name] = new_tag
|
||||||
|
|
||||||
for tag_name in last_node_tags:
|
for tag_name in last_node_tags:
|
||||||
|
|
Reference in a new issue