102 lines
2.6 KiB
Python
102 lines
2.6 KiB
Python
|
"""back fill build expand_config
|
||
|
|
||
|
Revision ID: a6c463dfb9fe
|
||
|
Revises: b4df55dea4b3
|
||
|
Create Date: 2017-03-17 10:00:19.739858
|
||
|
|
||
|
"""
|
||
|
|
||
|
# revision identifiers, used by Alembic.
|
||
|
import json
|
||
|
import os
|
||
|
|
||
|
from app import app
|
||
|
from peewee import *
|
||
|
from data.database import BaseModel
|
||
|
|
||
|
revision = 'a6c463dfb9fe'
|
||
|
down_revision = 'b4df55dea4b3'
|
||
|
|
||
|
from alembic import op as original_op
|
||
|
from data.migrations.progress import ProgressWrapper
|
||
|
|
||
|
|
||
|
class RepositoryBuildTrigger(BaseModel):
|
||
|
config = TextField(default='{}')
|
||
|
|
||
|
def upgrade(tables, tester, progress_reporter):
|
||
|
op = ProgressWrapper(original_op, progress_reporter)
|
||
|
if not app.config.get('SETUP_COMPLETE', False):
|
||
|
return
|
||
|
|
||
|
repostioryBuildTriggers = RepositoryBuildTrigger.select()
|
||
|
for repositoryBuildTrigger in repostioryBuildTriggers:
|
||
|
config = json.loads(repositoryBuildTrigger.config)
|
||
|
repositoryBuildTrigger.config = json.dumps(get_config_expand(config))
|
||
|
repositoryBuildTrigger.save()
|
||
|
|
||
|
|
||
|
def downgrade(tables, tester, progress_reporter):
|
||
|
op = ProgressWrapper(original_op, progress_reporter)
|
||
|
if not app.config.get('SETUP_COMPLETE', False):
|
||
|
return
|
||
|
|
||
|
repostioryBuildTriggers = RepositoryBuildTrigger.select()
|
||
|
for repositoryBuildTrigger in repostioryBuildTriggers:
|
||
|
config = json.loads(repositoryBuildTrigger.config)
|
||
|
repositoryBuildTrigger.config = json.dumps(get_config_expand(config))
|
||
|
repositoryBuildTrigger.save()
|
||
|
|
||
|
|
||
|
def create_context(current_subdir):
|
||
|
if current_subdir == "":
|
||
|
current_subdir = os.path.sep + current_subdir
|
||
|
|
||
|
if current_subdir[len(current_subdir) - 1] != os.path.sep:
|
||
|
current_subdir += os.path.sep
|
||
|
|
||
|
context, _ = os.path.split(current_subdir)
|
||
|
return context
|
||
|
|
||
|
|
||
|
def create_dockerfile_path(current_subdir):
|
||
|
if current_subdir == "":
|
||
|
current_subdir = os.path.sep + current_subdir
|
||
|
|
||
|
if current_subdir[len(current_subdir) - 1] != os.path.sep:
|
||
|
current_subdir += os.path.sep
|
||
|
|
||
|
return current_subdir + "Dockerfile"
|
||
|
|
||
|
|
||
|
def get_config_expand(config):
|
||
|
""" A function to transform old records into new records """
|
||
|
if not config:
|
||
|
return config
|
||
|
|
||
|
# skip records that have been updated
|
||
|
if "context" in config or "dockerfile_path" in config:
|
||
|
return config
|
||
|
|
||
|
config_expand = {}
|
||
|
if "subdir" in config:
|
||
|
config_expand = dict(config)
|
||
|
config_expand["context"] = create_context(config["subdir"])
|
||
|
config_expand["dockerfile_path"] = create_dockerfile_path(config["subdir"])
|
||
|
|
||
|
return config_expand
|
||
|
|
||
|
|
||
|
def get_config_contract(config):
|
||
|
""" A function to delete context and dockerfile_path from config """
|
||
|
if not config:
|
||
|
return config
|
||
|
|
||
|
if "context" in config:
|
||
|
del config["context"]
|
||
|
|
||
|
if "dockerfile_path" in config:
|
||
|
del config["dockerfile_path"]
|
||
|
|
||
|
return config
|