Add a complex db generator and create a more interesting repo.
This commit is contained in:
parent
3d89227752
commit
8b1c20f4ba
3 changed files with 88 additions and 0 deletions
|
@ -93,6 +93,7 @@ class DebugConfig(FlaskConfig, MailConfig, LocalStorage, SQLiteDB,
|
||||||
'format': LOG_FORMAT
|
'format': LOG_FORMAT
|
||||||
}
|
}
|
||||||
SEND_FILE_MAX_AGE_DEFAULT = 0
|
SEND_FILE_MAX_AGE_DEFAULT = 0
|
||||||
|
POPULATE_DB_TEST_DATA = True
|
||||||
|
|
||||||
|
|
||||||
class LocalHostedConfig(FlaskConfig, MailConfig, S3Storage, RDSMySQL,
|
class LocalHostedConfig(FlaskConfig, MailConfig, S3Storage, RDSMySQL,
|
||||||
|
|
87
initdb.py
87
initdb.py
|
@ -1,4 +1,91 @@
|
||||||
|
import logging
|
||||||
|
import string
|
||||||
|
|
||||||
|
from random import SystemRandom
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from data.database import initialize_db
|
from data.database import initialize_db
|
||||||
|
from data import model
|
||||||
|
from app import app
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
logging.basicConfig(**app.config['LOGGING_CONFIG'])
|
||||||
|
|
||||||
|
|
||||||
|
def __gen_hex_id(length=64):
|
||||||
|
random = SystemRandom()
|
||||||
|
return ''.join([random.choice('abcdef' + string.digits)
|
||||||
|
for x in range(length)])
|
||||||
|
|
||||||
|
|
||||||
|
def __gen_checksum():
|
||||||
|
return 'tarsum+sha256:' + __gen_hex_id(64)
|
||||||
|
|
||||||
|
|
||||||
|
def create_subtree(repo, structure, parent):
|
||||||
|
num_nodes, subtrees, last_node_tag = structure
|
||||||
|
|
||||||
|
# create the nodes
|
||||||
|
for i in range(num_nodes):
|
||||||
|
docker_image_id = __gen_hex_id()
|
||||||
|
checksum = __gen_checksum()
|
||||||
|
|
||||||
|
new_image = model.create_image(docker_image_id, repo)
|
||||||
|
model.set_image_checksum(docker_image_id, repo, checksum)
|
||||||
|
|
||||||
|
new_image = model.set_image_metadata(docker_image_id, repo.namespace,
|
||||||
|
repo.name, str(datetime.now()),
|
||||||
|
'no comment', parent)
|
||||||
|
|
||||||
|
parent = new_image
|
||||||
|
|
||||||
|
if last_node_tag:
|
||||||
|
model.create_or_update_tag(repo.namespace, repo.name, last_node_tag,
|
||||||
|
new_image.docker_image_id)
|
||||||
|
|
||||||
|
for subtree in subtrees:
|
||||||
|
create_subtree(repo, subtree, new_image)
|
||||||
|
|
||||||
|
|
||||||
|
def __generate_repository(user, name, is_public, permissions, structure):
|
||||||
|
repo = model.create_repository(user.username, name, user)
|
||||||
|
|
||||||
|
if is_public:
|
||||||
|
model.set_repository_visibility(repo, 'public')
|
||||||
|
|
||||||
|
for delegate, role in permissions:
|
||||||
|
model.set_user_repo_permission(delegate.username, user.username, name,
|
||||||
|
role)
|
||||||
|
|
||||||
|
create_subtree(repo, structure, None)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
initialize_db()
|
initialize_db()
|
||||||
|
|
||||||
|
if app.config.get('POPULATE_DB_TEST_DATA', False):
|
||||||
|
logger.debug('Populating the DB with test data.')
|
||||||
|
|
||||||
|
new_user_1 = model.create_user('devtable', 'password',
|
||||||
|
'jake@devtable.com')
|
||||||
|
new_user_1.verified = True
|
||||||
|
new_user_1.save()
|
||||||
|
|
||||||
|
new_user_2 = model.create_user('public', 'password',
|
||||||
|
'jacob.moshenko@gmail.com')
|
||||||
|
new_user_2.verified = True
|
||||||
|
new_user_2.save()
|
||||||
|
|
||||||
|
__generate_repository(new_user_1, 'simple', False, [], (4, [], 'latest'))
|
||||||
|
|
||||||
|
__generate_repository(new_user_1, 'complex', False, [],
|
||||||
|
(2, [(3, [], 'v2.0'),
|
||||||
|
(1, [(1, [(1, [], 'latest')], 'staging'),
|
||||||
|
(1, [], None)], None)], None))
|
||||||
|
|
||||||
|
__generate_repository(new_user_2, 'publicrepo', True, [],
|
||||||
|
(10, [], 'latest'))
|
||||||
|
|
||||||
|
__generate_repository(new_user_1, 'shared', False,
|
||||||
|
[(new_user_2, 'write')], (5, [], 'latest'))
|
||||||
|
|
BIN
test.db
BIN
test.db
Binary file not shown.
Reference in a new issue