Esempio n. 1
0
def deploy(environment, opts):
    """Deploy environment to production DataCats.com cloud service

Usage:
  datacats deploy [--create] [ENVIRONMENT [TARGET_NAME]]

Options:
  --create                Create a new environment on DataCats.com instead
                          of updating an existing environment

ENVIRONMENT may be an environment name or a path to a environment directory.
Default: '.'

TARGET_NAME is the name of the environment on DataCats.com. Defaults to
the environment name.
"""
    profile = get_working_profile(environment)
    if not profile:
        return 1

    target_name = opts['TARGET_NAME']
    if target_name is None:
        target_name = environment.name

    if not valid_deploy_name(target_name):
        print "Please choose a name at least 5 characters long"
        print "and containing only lowercase letters and numbers"
        return 1

    if opts['--create']:
        if not profile.create(environment, target_name, stdout):
            return 1

    if not profile.deploy(environment, target_name, stdout):
        return 1

    print "Deployed source to http://{0}.datacats.io".format(target_name)

    if opts['--create']:
        try:
            pw = confirm_password()
            profile.admin_password(environment, target_name, pw)
        except KeyboardInterrupt:
            pass
Esempio n. 2
0
def deploy(environment, opts, profile):
    """Deploy environment to production DataCats.com cloud service

Usage:
  datacats deploy [--create] [ENVIRONMENT [TARGET_NAME]]

Options:
  --create                Create a new environment on DataCats.com instead
                          of updating an existing environment

ENVIRONMENT may be an environment name or a path to a environment directory.
Default: '.'

TARGET_NAME is the name of the environment on DataCats.com. Defaults to
the environment name.
"""

    target_name = opts["TARGET_NAME"]
    if target_name is None:
        target_name = environment.name

    if not valid_deploy_name(target_name):
        raise DatacatsError(
            " `{target_name}` target name for deployment can't be accepted.\n"
            "Can't have http://{target_name}.datacats.io for your datcat URL\n"
            "Please choose a target name at least 5 characters long,\n"
            "and containing only lowercase letters and numbers\n".format(target_name=target_name)
        )

    if opts["--create"]:
        profile.create(environment, target_name)

    profile.deploy(environment, target_name, stdout)
    print "Deployed source to http://{0}.datacats.io".format(target_name)

    if opts["--create"]:
        try:
            pw = confirm_password()
            profile.admin_password(environment, target_name, pw)
        except KeyboardInterrupt:
            pass
Esempio n. 3
0
def deploy(environment, opts, profile):
    """Deploy environment to production DataCats.com cloud service

Usage:
  datacats deploy [--create] [ENVIRONMENT [TARGET_NAME]]

Options:
  --create                Create a new environment on DataCats.com instead
                          of updating an existing environment

ENVIRONMENT may be an environment name or a path to a environment directory.
Default: '.'

TARGET_NAME is the name of the environment on DataCats.com. Defaults to
the environment name.
"""

    target_name = opts['TARGET_NAME']
    if target_name is None:
        target_name = environment.name

    if not valid_deploy_name(target_name):
        raise DatacatsError(
            " `{target_name}` target name for deployment can't be accepted.\n"
            "Can't have http://{target_name}.datacats.io for your datcat URL\n"
            "Please choose a target name at least 5 characters long,\n"
            "and containing only lowercase letters and numbers\n".format(
                target_name=target_name))

    if opts['--create']:
        profile.create(environment, target_name)

    profile.deploy(environment, target_name, stdout)
    print "Deployed source to http://{0}.datacats.io".format(target_name)

    if opts['--create']:
        try:
            pw = confirm_password()
            profile.admin_password(environment, target_name, pw)
        except KeyboardInterrupt:
            pass
Esempio n. 4
0
def create_environment(environment_dir, port, ckan_version, create_skin,
                       start_web, create_sysadmin):
    try:
        # FIXME: only 2.3 preload supported at the moment
        environment = Environment.new(environment_dir, '2.3', port)
    except DatacatsError as e:
        print e
        return 1

    if not valid_deploy_name(environment.name):
        print "WARNING: When deploying you will need to choose a"
        print "target name that is at least 5 characters long"
        print

    write('Creating environment "{0}"'.format(environment.name))
    steps = [
        environment.create_directories,
        environment.create_bash_profile,
        environment.save,
        environment.create_virtualenv,
        environment.create_source,
        environment.start_postgres_and_solr,
        environment.fix_storage_permissions,
        environment.create_ckan_ini,
        lambda: environment.update_ckan_ini(skin=create_skin),
        environment.fix_project_permissions,
    ]

    if create_skin:
        steps.append(environment.create_install_template_skin)

    steps.append(environment.ckan_db_init)

    for fn in steps:
        fn()
        write('.')
    write('\n')

    return finish_init(environment, start_web, create_sysadmin)
Esempio n. 5
0
def create_environment(environment_dir, port, ckan_version, create_skin,
        start_web, create_sysadmin):
    try:
        # FIXME: only 2.3 preload supported at the moment
        environment = Environment.new(environment_dir, '2.3', port)
    except DatacatsError as e:
        print e
        return 1

    if not valid_deploy_name(environment.name):
        print "WARNING: When deploying you will need to choose a"
        print "target name that is at least 5 characters long"
        print

    write('Creating environment "{0}"'.format(environment.name))
    steps = [
        environment.create_directories,
        environment.create_bash_profile,
        environment.save,
        environment.create_virtualenv,
        environment.create_source,
        environment.start_postgres_and_solr,
        environment.fix_storage_permissions,
        environment.create_ckan_ini,
        lambda: environment.update_ckan_ini(skin=create_skin),
        environment.fix_project_permissions,
        ]

    if create_skin:
        steps.append(environment.create_install_template_skin)

    steps.append(environment.ckan_db_init)

    for fn in steps:
        fn()
        write('.')
    write('\n')

    return finish_init(environment, start_web, create_sysadmin)
Esempio n. 6
0
 def test_name_too_short(self):
     self.assertFalse(valid_deploy_name('foo'))