def put(self, id, webhook): """Update webhook. Currently, only function_id and function_version are allowed to update. """ acl.enforce('webhook:update', context.get_ctx()) values = {} for key in UPDATE_ALLOWED: if webhook.to_dict().get(key) is not None: values.update({key: webhook.to_dict()[key]}) LOG.info('Update %s %s, params: %s', self.type, id, values) # Even admin user can not expose normal user's function webhook_db = db_api.get_webhook(id, insecure=False) pre_function_id = webhook_db.function_id pre_version = webhook_db.function_version new_function_id = values.get("function_id", pre_function_id) new_version = values.get("function_version", pre_version) db_api.get_function(new_function_id, insecure=False) if new_version > 0: db_api.get_function_version(new_function_id, new_version) webhook = db_api.update_webhook(id, values).to_dict() return resources.Webhook.from_dict(self._add_webhook_url(id, webhook))
def put(self, id, webhook): """Update webhook. Currently, we only support update function_id. """ acl.enforce('webhook:update', context.get_ctx()) values = {} for key in UPDATE_ALLOWED: if webhook.to_dict().get(key) is not None: values.update({key: webhook.to_dict()[key]}) LOG.info('Update %s %s, params: %s', self.type, id, values) if 'function_id' in values: # Even admin user can not expose normal user's function db_api.get_function(values['function_id'], insecure=False) webhook = db_api.update_webhook(id, values).to_dict() return resources.Webhook.from_dict(self._add_webhook_url(id, webhook))
def put(self, id, webhook): acl.enforce('webhook:update', context.get_ctx()) values = {} for key in UPDATE_ALLOWED: if webhook.to_dict().get(key) is not None: values.update({key: webhook.to_dict()[key]}) LOG.info('Update %s %s, params: %s', self.type, id, values) # Even admin user can not expose normal user's function webhook_db = db_api.get_webhook(id, insecure=False) pre_alias = webhook_db.function_alias pre_function_id = webhook_db.function_id pre_version = webhook_db.function_version new_alias = values.get("function_alias") new_function_id = values.get("function_id", pre_function_id) new_version = values.get("function_version", pre_version) function_id = pre_function_id version = pre_version if new_alias and new_alias != pre_alias: alias_db = db_api.get_function_alias(new_alias) function_id = alias_db.function_id version = alias_db.function_version # If function_alias is provided, we don't store either functin id # or function version. values.update({'function_id': None, 'function_version': None}) elif new_function_id != pre_function_id or new_version != pre_version: function_id = new_function_id version = new_version values.update({"function_alias": None}) db_api.get_function(function_id, insecure=False) if version and version > 0: db_api.get_function_version(function_id, version) webhook = db_api.update_webhook(id, values).to_dict() return resources.Webhook.from_dict(self._add_webhook_url(id, webhook))