예제 #1
0
파일: config.py 프로젝트: hy070111/prod
def put(cfg_id):
    form, error = JsonParser(
        Argument('type',
                 default='',
                 filter=lambda x: x in ['private', 'public']), 'short_name',
        'desc', 'value').parse()
    if error is None:
        config_key = ConfigKey.query.get_or_404(cfg_id)
        owner = type_id_to_model_instance(config_key.owner_type,
                                          config_key.owner_id)
        if form.type in ['private']:
            form.name = form.pop('short_name').upper()
        else:
            form.name = (owner.identify + '_' + form.pop('short_name')).upper()
        exists_key = first_config_key(config_key.owner_type,
                                      config_key.owner_id, form)
        if exists_key and exists_key.id != cfg_id:
            return json_response(message='重复的变量名称!')
        for env_id, value in form.pop('value').items():
            config_value = ConfigValue.query.filter_by(
                env_id=env_id, key_id=config_key.id).first()
            if config_value:
                config_value.update(value=value)
            else:
                ConfigValue(key_id=config_key.id, env_id=env_id,
                            value=value).save()
        config_key.update(**form)
        return json_response()
    return json_response(message=error)
예제 #2
0
def setting_post(owner_id):
    form, error = JsonParser(
        Argument('name',
                 filter=lambda x: x in [
                     '__MEM_LIMIT', '__NETWORK_MODE', '__EXPOSE_PORT',
                     '__BIND_VOLUME', '__DNS_SERVER', '__HOST_NAME'
                 ],
                 help='无效的设置参数!'), Argument('value', type=dict),
        'desc').parse()
    if error is None:
        ok, message = valid_app_setting(form.name, form.value.values())
        if not ok:
            return json_response(message=message)
        values = form.pop('value')
        config_key = ConfigKey.query.filter_by(owner_type='app',
                                               owner_id=owner_id,
                                               name=form.name,
                                               type='system').first()
        if not config_key:
            config_key = ConfigKey(owner_type='app',
                                   owner_id=owner_id,
                                   type='system',
                                   **form).save()
        for env_id, value in values.items():
            config_value = ConfigValue.query.filter_by(
                env_id=env_id, key_id=config_key.id).first()
            if config_value:
                config_value.update(value=value)
            else:
                ConfigValue(key_id=config_key.id, env_id=env_id,
                            value=value).save()
        return json_response()
    return json_response(message=error)
예제 #3
0
def post_app(app_id):
    form, error = JsonParser(args.name, 'desc', 'value').parse()
    if error is None:
        if ConfigKey.query.filter_by(owner_type='app',
                                     owner_id=app_id,
                                     type='system',
                                     name=form.name).first():
            return json_response(message='重复的变量名称!')
        values = form.pop('value')
        config_key = ConfigKey(owner_type='app',
                               owner_id=app_id,
                               type='system',
                               **form).save()
        for k, v in values.items():
            ConfigValue(key_id=config_key.id, env_id=k, value=v).add()
        db.session.commit()
    return json_response(message=error)
예제 #4
0
파일: config.py 프로젝트: hy070111/prod
def post(owner_id):
    form, error = JsonParser(
        Argument('type',
                 default='',
                 filter=lambda x: x in ['private', 'public']), 'owner_type',
        'short_name', 'desc', 'value').parse()
    if error is None:
        owner = type_id_to_model_instance(form.owner_type, owner_id)
        form.owner_id = owner_id
        if form.type in ['private']:
            form.name = form.pop('short_name').upper()
        else:
            form.name = (owner.identify + '_' + form.pop('short_name')).upper()
        if first_config_key(form.owner_type, owner_id, form):
            return json_response(message='重复的变量名称!')
        values = form.pop('value')
        config = ConfigKey(**form).save()
        for k, v in values.items():
            ConfigValue(key_id=config.id, env_id=k, value=v).add()
        db.session.commit()
    return json_response(message=error)
예제 #5
0
def put_app(key_id):
    form, error = JsonParser(args.name, 'desc', 'value').parse()
    if error is None:
        config_key = ConfigKey.query.get_or_404(key_id)
        owner = App.query.get_or_404(config_key.owner_id)
        exists_config = ConfigKey.query.filter_by(owner_type='app',
                                                  owner_id=owner.id,
                                                  type='system',
                                                  name=form.name).first()
        if exists_config and exists_config.id != key_id:
            return json_response(message='重复的变量名称!')
        for env_id, value in form.pop('value').items():
            config_value = ConfigValue.query.filter_by(
                env_id=env_id, key_id=config_key.id).first()
            if config_value:
                config_value.update(value=value)
            else:
                ConfigValue(key_id=config_key.id, env_id=env_id,
                            value=value).save()
        config_key.update(**form)
    return json_response(message=error)