From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 927DF1FF15C for ; Fri, 14 Nov 2025 12:19:36 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 24DC5FA7E; Fri, 14 Nov 2025 12:19:12 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Fri, 14 Nov 2025 12:17:01 +0100 Message-ID: <20251114111828.160294-4-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251114111828.160294-1-d.kral@proxmox.com> References: <20251114111828.160294-1-d.kral@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1763119086514 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.017 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 Subject: [pve-devel] [PATCH ha-manager v4 03/21] rules: factor out disjoint rules' resource set helper X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" VGhpcyBpcyBkb25lIGluIHByZXBhcmF0aW9uIHRvIHRoZSBuZXh0IHBhdGNoZXMsIHdoZXJlIHRo ZSBoZWxwZXIgd2lsbApiZSB1c2VkIGluIGRpZmZlcmVudCBwYWNrYWdlcy4KCkFzIHRoZSBoZWxw ZXIgaXMgbm90IGRlcGVuZGVudCBvbiByZXNvdXJjZSBhZmZpbml0eSBydWxlcyBhdCBhbGwsIHJl bmFtZQppdCB0byBmaW5kX2Rpc2pvaW50X3J1bGVzX3Jlc291cmNlX3NldHMoLi4uKSBhbmQgYWRh cHQgdGhlIGRvY3VtZW50YXRpb24KYWNjb3JkaW5nbHkuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwg S3JhbCA8ZC5rcmFsQHByb3htb3guY29tPgpSZXZpZXdlZC1ieTogTWljaGFlbCBLw7ZwcGwgPG0u a29lcHBsQHByb3htb3guY29tPgpUZXN0ZWQtYnk6IE1pY2hhZWwgS8O2cHBsIDxtLmtvZXBwbEBw cm94bW94LmNvbT4KLS0tCiBkZWJpYW4vcHZlLWhhLW1hbmFnZXIuaW5zdGFsbCAgICAgICAgfCAg MSArCiBzcmMvUFZFL0hBL1J1bGVzL0hlbHBlcnMucG0gICAgICAgICAgfCA3NyArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvUFZFL0hBL1J1bGVzL01ha2VmaWxlICAgICAgICAgICAg fCAgMiArLQogc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBtIHwgNTggKystLS0t LS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDU1IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9QVkUvSEEvUnVsZXMvSGVscGVycy5w bQoKZGlmZiAtLWdpdCBhL2RlYmlhbi9wdmUtaGEtbWFuYWdlci5pbnN0YWxsIGIvZGViaWFuL3B2 ZS1oYS1tYW5hZ2VyLmluc3RhbGwKaW5kZXggMmU2YjdkNTUuLjM4ZDVkNjBiIDEwMDY0NAotLS0g YS9kZWJpYW4vcHZlLWhhLW1hbmFnZXIuaW5zdGFsbAorKysgYi9kZWJpYW4vcHZlLWhhLW1hbmFn ZXIuaW5zdGFsbApAQCAtMzUsNiArMzUsNyBAQAogL3Vzci9zaGFyZS9wZXJsNS9QVkUvSEEvUmVz b3VyY2VzL1BWRUNULnBtCiAvdXNyL3NoYXJlL3Blcmw1L1BWRS9IQS9SZXNvdXJjZXMvUFZFVk0u cG0KIC91c3Ivc2hhcmUvcGVybDUvUFZFL0hBL1J1bGVzLnBtCisvdXNyL3NoYXJlL3Blcmw1L1BW RS9IQS9SdWxlcy9IZWxwZXJzLnBtCiAvdXNyL3NoYXJlL3Blcmw1L1BWRS9IQS9SdWxlcy9Ob2Rl QWZmaW5pdHkucG0KIC91c3Ivc2hhcmUvcGVybDUvUFZFL0hBL1J1bGVzL1Jlc291cmNlQWZmaW5p dHkucG0KIC91c3Ivc2hhcmUvcGVybDUvUFZFL0hBL1Rvb2xzLnBtCmRpZmYgLS1naXQgYS9zcmMv UFZFL0hBL1J1bGVzL0hlbHBlcnMucG0gYi9zcmMvUFZFL0hBL1J1bGVzL0hlbHBlcnMucG0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjc4NjEzMzJiCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL1BWRS9IQS9SdWxlcy9IZWxwZXJzLnBtCkBAIC0wLDAgKzEsNzcgQEAKK3BhY2th Z2UgUFZFOjpIQTo6UnVsZXM6OkhlbHBlcnM7CisKK3VzZSB2NS4zNjsKKwordXNlIFBWRTo6SEE6 Okhhc2hUb29scyBxdyhzZXRzX2FyZV9kaXNqb2ludCk7CisKK215IHN1YiBzb3J0X2J5X2xvd2Vz dF9yZXNvdXJjZV9pZCgkcnVsZXMpIHsKKyAgICBteSAkbG93ZXN0X3J1bGVfcmVzb3VyY2VfaWQg PSB7fTsKKyAgICBmb3IgbXkgJHJ1bGVpZCAoa2V5cyAlJHJ1bGVzKSB7CisgICAgICAgIG15IEBy dWxlX3Jlc291cmNlcyA9IHNvcnQga2V5cyAkcnVsZXMtPnskcnVsZWlkfS0+e3Jlc291cmNlc30t PiUqOworICAgICAgICAkbG93ZXN0X3J1bGVfcmVzb3VyY2VfaWQtPnskcnVsZWlkfSA9ICRydWxl X3Jlc291cmNlc1swXTsKKyAgICB9CisKKyAgICAjIHNvcnQgcnVsZXMgc3VjaCB0aGF0IHJ1bGVz IHdpdGggdGhlIGxvd2VzdCBudW1iZXJlZCByZXNvdXJjZSBjb21lIGZpcnN0CisgICAgbXkgQHNv cnRlZF9ydWxlaWRzID0gc29ydCB7CisgICAgICAgICRsb3dlc3RfcnVsZV9yZXNvdXJjZV9pZC0+ eyRhfSBjbXAgJGxvd2VzdF9ydWxlX3Jlc291cmNlX2lkLT57JGJ9CisgICAgfSBzb3J0IGtleXMg JSRydWxlczsKKworICAgIHJldHVybiBAc29ydGVkX3J1bGVpZHM7Cit9CisKKz1oZWFkMyBmaW5k X2Rpc2pvaW50X3J1bGVzX3Jlc291cmNlX3NldHMoJHJ1bGVzKQorCitGaW5kcyB0aGUgcnVsZSBz dWJzZXRzIGluIEM8JHJ1bGVzPiwgd2hpY2ggcmVmZXJlbmNlIGEgZGlzam9pbnQgc2V0IG9mIHJl c291cmNlcword2l0aCByZXNwZWN0IHRvIHRoZSBvdGhlciBydWxlcy4gVGhlIGRpc2pvaW50IHJ1 bGUgcmVzb3VyY2Ugc2V0cyBhcmUgcmV0dXJuZWQgYXMKK2EgbGlzdCBvZiBoYXNoZXMsIHdoZXJl IGVhY2ggaXRlbSBjb250YWlucyB0aGUgZGlzam9pbnQgcmVzb3VyY2Ugc2V0IGFuZCB0aGUKK3J1 bGVpZHMgZnJvbSBDPCRydWxlcz4gdGhhdCB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSByZXNvdXJj ZSBzdWJzZXQuCisKK0ZvciBleGFtcGxlLCBpZiBvbmUgcnVsZSByZWZlcmVuY2VzIHRoZSByZXNv dXJjZXMgQzwndm06MTAxJz4gYW5kIEM8J3ZtOjEwMic+LAorYW5kIGFub3RoZXIgcnVsZSByZWZl cmVuY2VzIHRoZSByZXNvdXJjZXMgQzwndm06MTAyJz4gYW5kIEM8J3ZtOjEwMyc+LCB0aGVzZQor d2lsbCByZXN1bHQgaW4gb25lIGRpc2pvaW50IHJ1bGUgcmVzb3VyY2Ugc2V0LCB0aHVzIHRoZSBy ZXR1cm4gdmFsdWU6CisKKyAgICAoCisgICAgICAgIHsKKyAgICAgICAgICAgIHJ1bGVpZHMgPSBb ICdydWxlMScsICdydWxlMicgXSwKKyAgICAgICAgICAgIHJlc291cmNlcyA9PiB7CisgICAgICAg ICAgICAgICAgJ3ZtOjEwMScgPT4gMSwKKyAgICAgICAgICAgICAgICAndm06MTAyJyA9PiAxLAor ICAgICAgICAgICAgICAgICd2bToxMDMnID0+IDEKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICkKKworPWN1dAorCitzdWIgZmluZF9kaXNqb2ludF9ydWxlc19yZXNvdXJjZV9zZXRzKCRy dWxlcykgeworICAgIG15IEBkaXNqb2ludF9ydWxlcyA9ICgpOworCisgICAgIyBvcmRlciBuZWVk ZWQgc28gdGhhdCBpdCBpcyBlYXNpZXIgdG8gY2hlY2sgd2hldGhlciB0aGVyZSBpcyBhbiBvdmVy bGFwCisgICAgbXkgQHNvcnRlZF9ydWxlaWRzID0gc29ydF9ieV9sb3dlc3RfcmVzb3VyY2VfaWQo JHJ1bGVzKTsKKworICAgIGZvciBteSAkcnVsZWlkIChAc29ydGVkX3J1bGVpZHMpIHsKKyAgICAg ICAgbXkgJHJ1bGUgPSAkcnVsZXMtPnskcnVsZWlkfTsKKworICAgICAgICBteSAkZm91bmQgPSAw OworICAgICAgICBmb3IgbXkgJGVudHJ5IChAZGlzam9pbnRfcnVsZXMpIHsKKyAgICAgICAgICAg IG5leHQgaWYgc2V0c19hcmVfZGlzam9pbnQoJHJ1bGUtPntyZXNvdXJjZXN9LCAkZW50cnktPnty ZXNvdXJjZXN9KTsKKworICAgICAgICAgICAgJGZvdW5kID0gMTsKKyAgICAgICAgICAgIHB1c2gg QHsgJGVudHJ5LT57cnVsZWlkc30gfSwgJHJ1bGVpZDsKKyAgICAgICAgICAgICRlbnRyeS0+e3Jl c291cmNlc30tPnskX30gPSAxIGZvciBrZXlzICRydWxlLT57cmVzb3VyY2VzfS0+JSo7CisKKyAg ICAgICAgICAgIGxhc3Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEkZm91bmQpIHsKKyAgICAg ICAgICAgIHB1c2ggQGRpc2pvaW50X3J1bGVzLAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgcnVsZWlkcyA9PiBbJHJ1bGVpZF0sCisgICAgICAgICAgICAgICAgICAgIHJl c291cmNlcyA9PiB7ICRydWxlLT57cmVzb3VyY2VzfS0+JSogfSwKKyAgICAgICAgICAgICAgICB9 OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEBkaXNqb2ludF9ydWxlczsKK30KKwor MTsKZGlmZiAtLWdpdCBhL3NyYy9QVkUvSEEvUnVsZXMvTWFrZWZpbGUgYi9zcmMvUFZFL0hBL1J1 bGVzL01ha2VmaWxlCmluZGV4IDFjYmRlNWJhLi45NzdjODgyYSAxMDA2NDQKLS0tIGEvc3JjL1BW RS9IQS9SdWxlcy9NYWtlZmlsZQorKysgYi9zcmMvUFZFL0hBL1J1bGVzL01ha2VmaWxlCkBAIC0x LDQgKzEsNCBAQAotU0lNX1NPVVJDRVM9Tm9kZUFmZmluaXR5LnBtIFJlc291cmNlQWZmaW5pdHku cG0KK1NJTV9TT1VSQ0VTPUhlbHBlcnMucG0gTm9kZUFmZmluaXR5LnBtIFJlc291cmNlQWZmaW5p dHkucG0KIFNPVVJDRVM9JHtTSU1fU09VUkNFU30KIAogLlBIT05ZOiBpbnN0YWxsCmRpZmYgLS1n aXQgYS9zcmMvUFZFL0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHkucG0gYi9zcmMvUFZFL0hBL1J1 bGVzL1Jlc291cmNlQWZmaW5pdHkucG0KaW5kZXggNDAwOTkwOTAuLjMzMmE0MmFiIDEwMDY0NAot LS0gYS9zcmMvUFZFL0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHkucG0KKysrIGIvc3JjL1BWRS9I QS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBtCkBAIC0zLDggKzMsOSBAQCBwYWNrYWdlIFBWRTo6 SEE6OlJ1bGVzOjpSZXNvdXJjZUFmZmluaXR5OwogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsK IAotdXNlIFBWRTo6SEE6Okhhc2hUb29scyBxdyhzZXRfaW50ZXJzZWN0IHNldHNfYXJlX2Rpc2pv aW50KTsKK3VzZSBQVkU6OkhBOjpIYXNoVG9vbHMgcXcoc2V0X2ludGVyc2VjdCk7CiB1c2UgUFZF OjpIQTo6UnVsZXM7Cit1c2UgUFZFOjpIQTo6UnVsZXM6OkhlbHBlcnM7CiB1c2UgUFZFOjpIQTo6 VXNhZ2U7CiAKIHVzZSBiYXNlIHF3KEV4cG9ydGVyKTsKQEAgLTI0OCw1OCArMjQ5LDYgQEAgX19Q QUNLQUdFX18tPnJlZ2lzdGVyX2NoZWNrKAogCiA9Y3V0CiAKLW15ICRzb3J0X2J5X2xvd2VzdF9y ZXNvdXJjZV9pZCA9IHN1YiB7Ci0gICAgbXkgKCRydWxlcykgPSBAXzsKLQotICAgIG15ICRsb3dl c3RfcnVsZV9yZXNvdXJjZV9pZCA9IHt9OwotICAgIGZvciBteSAkcnVsZWlkIChrZXlzICUkcnVs ZXMpIHsKLSAgICAgICAgbXkgQHJ1bGVfcmVzb3VyY2VzID0gc29ydCBrZXlzICRydWxlcy0+eyRy dWxlaWR9LT57cmVzb3VyY2VzfS0+JSo7Ci0gICAgICAgICRsb3dlc3RfcnVsZV9yZXNvdXJjZV9p ZC0+eyRydWxlaWR9ID0gJHJ1bGVfcmVzb3VyY2VzWzBdOwotICAgIH0KLQotICAgICMgc29ydCBy dWxlcyBzdWNoIHRoYXQgcnVsZXMgd2l0aCB0aGUgbG93ZXN0IG51bWJlcmVkIHJlc291cmNlIGNv bWUgZmlyc3QKLSAgICBteSBAc29ydGVkX3J1bGVpZHMgPSBzb3J0IHsKLSAgICAgICAgJGxvd2Vz dF9ydWxlX3Jlc291cmNlX2lkLT57JGF9IGNtcCAkbG93ZXN0X3J1bGVfcmVzb3VyY2VfaWQtPnsk Yn0KLSAgICB9IHNvcnQga2V5cyAlJHJ1bGVzOwotCi0gICAgcmV0dXJuIEBzb3J0ZWRfcnVsZWlk czsKLX07Ci0KLSMgcmV0dXJucyBhIGxpc3Qgb2YgaGFzaGVzLCB3aGljaCBjb250YWluIGRpc2pv aW50IHJlc291cmNlIGFmZmluaXR5IHJ1bGVzLCBpLmUuLAotIyBwdXQgcmVzb3VyY2UgYWZmaW5p dHkgY29uc3RyYWludHMgb24gZGlzam9pbnQgc2V0cyBvZiByZXNvdXJjZXMKLW15ICRmaW5kX2Rp c2pvaW50X3Jlc291cmNlX2FmZmluaXR5X3J1bGVzID0gc3ViIHsKLSAgICBteSAoJHJ1bGVzKSA9 IEBfOwotCi0gICAgbXkgQGRpc2pvaW50X3J1bGVzID0gKCk7Ci0KLSAgICAjIG9yZGVyIG5lZWRl ZCBzbyB0aGF0IGl0IGlzIGVhc2llciB0byBjaGVjayB3aGV0aGVyIHRoZXJlIGlzIGFuIG92ZXJs YXAKLSAgICBteSBAc29ydGVkX3J1bGVpZHMgPSAkc29ydF9ieV9sb3dlc3RfcmVzb3VyY2VfaWQt PigkcnVsZXMpOwotCi0gICAgZm9yIG15ICRydWxlaWQgKEBzb3J0ZWRfcnVsZWlkcykgewotICAg ICAgICBteSAkcnVsZSA9ICRydWxlcy0+eyRydWxlaWR9OwotCi0gICAgICAgIG15ICRmb3VuZCA9 IDA7Ci0gICAgICAgIGZvciBteSAkZW50cnkgKEBkaXNqb2ludF9ydWxlcykgewotICAgICAgICAg ICAgbmV4dCBpZiBzZXRzX2FyZV9kaXNqb2ludCgkcnVsZS0+e3Jlc291cmNlc30sICRlbnRyeS0+ e3Jlc291cmNlc30pOwotCi0gICAgICAgICAgICAkZm91bmQgPSAxOwotICAgICAgICAgICAgcHVz aCBAeyAkZW50cnktPntydWxlaWRzfSB9LCAkcnVsZWlkOwotICAgICAgICAgICAgJGVudHJ5LT57 cmVzb3VyY2VzfS0+eyRffSA9IDEgZm9yIGtleXMgJHJ1bGUtPntyZXNvdXJjZXN9LT4lKjsKLQot ICAgICAgICAgICAgbGFzdDsKLSAgICAgICAgfQotICAgICAgICBpZiAoISRmb3VuZCkgewotICAg ICAgICAgICAgcHVzaCBAZGlzam9pbnRfcnVsZXMsCi0gICAgICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgICAgICBydWxlaWRzID0+IFskcnVsZWlkXSwKLSAgICAgICAgICAgICAgICAgICAg cmVzb3VyY2VzID0+IHsgJHJ1bGUtPntyZXNvdXJjZXN9LT4lKiB9LAotICAgICAgICAgICAgICAg IH07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gQGRpc2pvaW50X3J1bGVzOwotfTsK LQogPWhlYWQzIG1lcmdlX2Nvbm5lY3RlZF9wb3NpdGl2ZV9yZXNvdXJjZV9hZmZpbml0eV9ydWxl cygkcnVsZXMsICRwb3NpdGl2ZV9ydWxlcykKIAogTW9kaWZpZXMgQzwkcnVsZXM+IHRvIGNvbnRh aW4gb25seSBkaXNqb2ludCBwb3NpdGl2ZSByZXNvdXJjZSBhZmZpbml0eSBydWxlcwpAQCAtMzIw LDcgKzI2OSw4IEBAIGEgcmVzb3VyY2UsIGluIEM8JHJ1bGVzPiBhdCBhIGxhdGVyIHBvaW50IGlu IHRpbWUuCiBzdWIgbWVyZ2VfY29ubmVjdGVkX3Bvc2l0aXZlX3Jlc291cmNlX2FmZmluaXR5X3J1 bGVzIHsKICAgICBteSAoJHJ1bGVzLCAkcG9zaXRpdmVfcnVsZXMpID0gQF87CiAKLSAgICBteSBA ZGlzam9pbnRfcG9zaXRpdmVfcnVsZXMgPSAkZmluZF9kaXNqb2ludF9yZXNvdXJjZV9hZmZpbml0 eV9ydWxlcy0+KCRwb3NpdGl2ZV9ydWxlcyk7CisgICAgbXkgQGRpc2pvaW50X3Bvc2l0aXZlX3J1 bGVzID0KKyAgICAgICAgUFZFOjpIQTo6UnVsZXM6OkhlbHBlcnM6OmZpbmRfZGlzam9pbnRfcnVs ZXNfcmVzb3VyY2Vfc2V0cygkcG9zaXRpdmVfcnVsZXMpOwogCiAgICAgZm9yIG15ICRlbnRyeSAo QGRpc2pvaW50X3Bvc2l0aXZlX3J1bGVzKSB7CiAgICAgICAgIG5leHQgaWYgQHsgJGVudHJ5LT57 cnVsZWlkc30gfSA8IDI7Ci0tIAoyLjQ3LjMKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlz dHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4v bGlzdGluZm8vcHZlLWRldmVsCg==