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
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
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
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)
def test_name_too_short(self): self.assertFalse(valid_deploy_name('foo'))