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)
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)
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)
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)
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)