Ejemplo n.º 1
0
def new_environment_check(srcpath, site_name, ckan_version):
    """
    Check if a new environment or site can be created at the given path.

    Returns (name, datadir, sitedir, srcdir) or raises DatacatsError
    """
    docker.require_images()

    workdir, name = path.split(path.abspath(path.expanduser(srcpath)))

    if not validate.valid_name(name):
        raise DatacatsError(
            "Please choose an environment name starting"
            " with a letter and including only lowercase letters"
            " and digits"
        )
    if not path.isdir(workdir):
        raise DatacatsError("Parent directory for environment" " does not exist")

    datadir = path.expanduser("~/.datacats/" + name)
    sitedir = datadir + "/sites/" + site_name
    # We track through the datadir to the target if we are just making a
    # site
    if path.isdir(datadir):
        with open(datadir + "/project-dir") as pd:
            srcdir = pd.read()
    else:
        srcdir = workdir + "/" + name

    if ckan_version not in SUPPORTED_PRELOADS:
        raise DatacatsError(
            """Datacats does not currently support CKAN version {}.
Versions that are currently supported are: {}""".format(
                ckan_version, ", ".join(SUPPORTED_PRELOADS)
            )
        )

    preload_name = str(ckan_version)

    # Get all the versions from the tags
    downloaded_versions = [tag for tag in docker.get_tags("datacats/ckan")]

    if ckan_version not in downloaded_versions:
        retrying_pull_image("datacats/ckan:{}".format(preload_name))

    if path.isdir(sitedir):
        raise DatacatsError("Site data directory {0} already exists".format(sitedir))
    # This is the case where the data dir has been removed,
    if path.isdir(srcdir) and not path.isdir(datadir):
        raise DatacatsError(
            "Environment directory exists, but data directory does not.\n"
            "If you simply want to recreate the data directory, run "
            '"datacats init" in the environment directory.'
        )

    return name, datadir, srcdir
Ejemplo n.º 2
0
def new_environment_check(srcpath, site_name, ckan_version):
    """
    Check if a new environment or site can be created at the given path.

    Returns (name, datadir, sitedir, srcdir) or raises DatacatsError
    """
    docker.require_images()

    workdir, name = path.split(path.abspath(path.expanduser(srcpath)))

    if not validate.valid_name(name):
        raise DatacatsError(
            'Please choose an environment name starting'
            ' with a letter and including only lowercase letters'
            ' and digits')
    if not path.isdir(workdir):
        raise DatacatsError('Parent directory for environment'
                            ' does not exist')

    datadir = path.expanduser('~/.datacats/' + name)
    sitedir = datadir + '/sites/' + site_name
    # We track through the datadir to the target if we are just making a
    # site
    if path.isdir(datadir):
        with open(datadir + '/project-dir') as pd:
            srcdir = pd.read()
    else:
        srcdir = workdir + '/' + name

    if ckan_version not in SUPPORTED_PRELOADS:
        raise DatacatsError(
            '''Datacats does not currently support CKAN version {}.
Versions that are currently supported are: {}'''.format(
                ckan_version, ', '.join(SUPPORTED_PRELOADS)))

    preload_name = str(ckan_version)

    # Get all the versions from the tags
    downloaded_versions = [tag for tag in docker.get_tags('datacats/ckan')]

    if ckan_version not in downloaded_versions:
        retrying_pull_image('datacats/ckan:{}'.format(preload_name))

    if path.isdir(sitedir):
        raise DatacatsError(
            'Site data directory {0} already exists'.format(sitedir))
    # This is the case where the data dir has been removed,
    if path.isdir(srcdir) and not path.isdir(datadir):
        raise DatacatsError(
            'Environment directory exists, but data directory does not.\n'
            'If you simply want to recreate the data directory, run '
            '"datacats init" in the environment directory.')

    return name, datadir, srcdir
Ejemplo n.º 3
0
def require_extra_image(image_name):
    if not docker.image_exists(image_name):
        retrying_pull_image(image_name)
Ejemplo n.º 4
0
def require_extra_image(image_name):
    if not docker.image_exists(image_name):
        retrying_pull_image(image_name)