From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <p.hufnagl@proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by lists.proxmox.com (Postfix) with ESMTPS id 29864BED26
 for <pbs-devel@lists.proxmox.com>; Tue,  2 Jan 2024 12:07:44 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
 by firstgate.proxmox.com (Proxmox) with ESMTP id 04C9515C47
 for <pbs-devel@lists.proxmox.com>; Tue,  2 Jan 2024 12:07:14 +0100 (CET)
Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com
 [94.136.29.106])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by firstgate.proxmox.com (Proxmox) with ESMTPS
 for <pbs-devel@lists.proxmox.com>; Tue,  2 Jan 2024 12:07:13 +0100 (CET)
Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1])
 by proxmox-new.maurer-it.com (Proxmox) with ESMTP id BA916452AA
 for <pbs-devel@lists.proxmox.com>; Tue,  2 Jan 2024 12:07:12 +0100 (CET)
From: Philipp Hufnagl <p.hufnagl@proxmox.com>
To: pbs-devel@lists.proxmox.com
Date: Tue,  2 Jan 2024 12:06:51 +0100
Message-Id: <20240102110655.155329-1-p.hufnagl@proxmox.com>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.040 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
 T_SCC_BODY_TEXT_LINE    -0.01 -
Subject: [pbs-devel] [PATCH proxmox-backup v7 0/4] fix #4315: datastore:
 Exclude entries from sync
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
X-List-Received-Date: Tue, 02 Jan 2024 11:07:44 -0000

This allows to use Group Filter for sync jobs so matches can not just be
included but also excluded. For this the "group-filter" configuration
syntax has been extended with an optional "behaviour" parameter.
this can be "include" or "exclude". First, all include filter will be
applied, then all exclude filter. If no include filters exist, all will
be considered included.

Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
---
Changes since v6:
 * Optimize apply_filter to use less memory

Changes since v5:
 * add apply_filter to GrpupFilter member
 * do include/eclude filter seperation in apply_filter
 * minor code improvements based on feedback

Changes since v4:
 * add testing
 * refactor apply filter logic to reduce duplicaton
 * split filter in incude/exclude lists

Changes since v3:
 * increase size of delete icon
 * include all when no include filter exist

Changes since v2:
 * rebase to new master
 * change docu as suggested
 * make list for filter smaller

Changes since v1:
 * rename behaviour in behavior
 * modify behavior, so that first all include filter will be executed,
   then all exlude one

Philipp Hufnagl (4):
  fix #4315: jobs: modify GroupFilter so include/exclude is tracked
  ui: Show if Filter includes or excludes
  docs: document new include/exclude paramenter
  tests: check if include/exclude behavior works correctly

 docs/managing-remotes.rst      |  13 ++
 pbs-api-types/src/datastore.rs |  36 +++--
 pbs-api-types/src/jobs.rs      |  51 ++++++--
 src/api2/tape/backup.rs        |  39 +++---
 src/server/pull.rs             |  46 +++----
 tests/sync_jobs.rs             |  76 +++++++++++
 www/form/GroupFilter.js        | 233 ++++++++++++++++++++++++---------
 7 files changed, 358 insertions(+), 136 deletions(-)
 create mode 100644 tests/sync_jobs.rs

-- 
2.39.2