Add a tool to fix the images that were wrong before c8f0780
fixed tags.
This commit is contained in:
parent
c8f0780aaf
commit
c3cb1dfa87
1 changed files with 48 additions and 0 deletions
48
tools/audittagimages.py
Normal file
48
tools/audittagimages.py
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
from data.database import Image, RepositoryTag, Repository
|
||||||
|
|
||||||
|
from app import app
|
||||||
|
|
||||||
|
|
||||||
|
store = app.config['STORAGE']
|
||||||
|
|
||||||
|
|
||||||
|
tag_query = (RepositoryTag
|
||||||
|
.select(RepositoryTag, Image, Repository)
|
||||||
|
.join(Repository)
|
||||||
|
.switch(RepositoryTag)
|
||||||
|
.join(Image))
|
||||||
|
|
||||||
|
for tag in tag_query:
|
||||||
|
if tag.image.repository.id != tag.repository.id:
|
||||||
|
print('Repository tag pointing to external image: %s/%s:%s' %
|
||||||
|
(tag.repository.namespace, tag.repository.name, tag.name))
|
||||||
|
|
||||||
|
proper_image_layer_path = store.image_layer_path(tag.repository.namespace,
|
||||||
|
tag.repository.name,
|
||||||
|
tag.image.docker_image_id)
|
||||||
|
|
||||||
|
has_storage = False
|
||||||
|
if store.exists(proper_image_layer_path):
|
||||||
|
print('Storage already in place: %s' % proper_image_layer_path)
|
||||||
|
has_storage = True
|
||||||
|
else:
|
||||||
|
print('Storage missing: %s' % proper_image_layer_path)
|
||||||
|
|
||||||
|
has_db_entry = False
|
||||||
|
new_image = None
|
||||||
|
try:
|
||||||
|
new_image = Image.get(Image.docker_image_id == tag.image.docker_image_id,
|
||||||
|
Image.repository == tag.repository)
|
||||||
|
has_db_entry = True
|
||||||
|
print('DB image in place: %s invalid image id: %s' % (new_image.id,
|
||||||
|
tag.image.id))
|
||||||
|
except Image.DoesNotExist:
|
||||||
|
print('DB image missing: %s' % tag.image.docker_image_id)
|
||||||
|
|
||||||
|
if has_storage and has_db_entry:
|
||||||
|
print('Switching tag to proper image %s/%s/%s -> %s' %
|
||||||
|
(tag.repository.namespace, tag.repository.name, tag.name,
|
||||||
|
new_image.id))
|
||||||
|
tag.image = new_image
|
||||||
|
tag.save()
|
||||||
|
print('Done')
|
Reference in a new issue