def create(context, request): try: name = request.params['name'] virtualenv_name = request.params.get('virtualenv_name') # try to get the env from db, as it must not exists Environment.get(request.db_session, name) except KeyError as e: raise ParamsError(e) except NoResultFound: # no env found, submit the task return request.submit_task('environment.create', name=name, virtualenv_name=virtualenv_name) else: # found instance, give conflict error = 'environment {} already exists'.format(name) raise HTTPConflict(headers={'X-Request-Error': error})
def switch_environment(session, task, id, environment): instance = Instance.get(session, id) new_env = Environment.get(session, environment) reenable = False if instance.enabled: reenable = True instance.enabled = False instance.environment = new_env if reenable: instance.enabled = True
def deploy(session, task, domain, owner_email, environment_name, technical_contact_email, theme_name=None, default_language=u'it', database_password=None, enabled=True): env = Environment.get(session, environment_name) theme = None if not theme_name else Theme.get(session, theme_name) owner = User.get(session, owner_email) technical_contact = User.get(session, technical_contact_email) instance = Instance.deploy(session, domain, owner, env, technical_contact, theme, default_language, database_password, enabled) return instance.id
def rewrite(context, request): env = Environment.get(request.db_session, request.matchdict['name']) taskname = "environment.rewrite" return request.submit_task(taskname, name=env.name)
def info(context, request): env = Environment.get(request.db_session, request.matchdict['name']) return env.to_dict(paths=True, instances=True)
def deploy(context, request): try: params = dict( domain=request.params['domain'], owner_email=request.params['owner_email'], environment_name=request.params['environment_name'], technical_contact_email=request.params.get( 'technical_contact_email', request.params['owner_email']), theme_name=request.params.get('theme_name'), default_language=request.params.get('default_language', u'it'), database_password=request.params.get('database_password'), enabled=True if request.params.get('enabled') else False, verbose=True if request.params.get('verbose') else False, ) check_domain_not_used(request, params['domain']) params['domain'] = validate_hostname(params['domain']) # try to get the instance, as it MUST not exists Instance.get_by_domain(request.db_session, params['domain']) except KeyError as e: log.exception("Error validating params") raise ParamsError(e) except NoResultFound: # no instance found, validate relations. try: field = 'owner_email' cls = 'user' User.log.debug("Validating owner %s", params[field]) owner = User.get(request.db_session, params[field]) if not owner: raise NoResultFound() if params['technical_contact_email'] != params['owner_email']: field = 'technical_contact_email' User.log.debug("Validating contact %s", params[field]) ctc = User.get(request.db_session, params[field]) if not ctc: raise NoResultFound() field = 'environment_name' cls = 'environment' Environment.log.debug("validating environment %s", params[field]) env = Environment.get(request.db_session, params[field]) if not env: raise NoResultFound() field = 'theme_name' cls = 'theme' if params[field]: Theme.log.debug("Validating theme %s", params[field]) theme = Theme.get(request.db_session, params[field]) if not theme: raise NoResultFound() except NoResultFound: raise ParamsError('{} "{}" for {} not found'\ .format(cls.title(), params[field], field)) else: log.info("Submitting task") # relations exists, submit tasks return request.submit_task('instance.deploy', **params) else: # found instance, conflict error = 'instance for domain {} already exists'\ .format(params['domain']) raise HTTPConflict(headers={'X-Request-Error': error})
def rewrite(session, task, name): env = Environment.get(session, name) env.rewrite()
def delete(session, task, name): env = Environment.get(session, name) env.delete()