From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 881771FF15E for <inbox@lore.proxmox.com>; Tue, 25 Feb 2025 13:16:39 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9F9171BF5F; Tue, 25 Feb 2025 13:16:32 +0100 (CET) To: pve-devel@lists.proxmox.com Date: Mon, 24 Feb 2025 17:58:25 +0100 In-Reply-To: <20250224165825.82940-1-jonah.zuercher@adfinis.com> References: <20250224165825.82940-1-jonah.zuercher@adfinis.com> X-Mailman-Approved-At: Tue, 25 Feb 2025 13:16:30 +0100 MIME-Version: 1.0 Message-ID: <mailman.525.1740485791.293.pve-devel@lists.proxmox.com> List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Post: <mailto:pve-devel@lists.proxmox.com> From: jonahz via pve-devel <pve-devel@lists.proxmox.com> Precedence: list Cc: jonahz <jonah.zuercher@adfinis.com> X-Mailman-Version: 2.1.29 X-BeenThere: pve-devel@lists.proxmox.com List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> Subject: [pve-devel] [PATCH container 1/1] fix #5496: sdn: fix netbox integration Content-Type: multipart/mixed; boundary="===============5913751118052367451==" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> --===============5913751118052367451== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: <jonah.zuercher@adfinis.com> X-Original-To: pve-devel@lists.proxmox.com Delivered-To: pve-devel@lists.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) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id AFE33D0596 for <pve-devel@lists.proxmox.com>; Mon, 24 Feb 2025 17:59:23 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9B0C8CC3C for <pve-devel@lists.proxmox.com>; Mon, 24 Feb 2025 17:58:53 +0100 (CET) Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for <pve-devel@lists.proxmox.com>; Mon, 24 Feb 2025 17:58:53 +0100 (CET) Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5e0b70fb1daso5641045a12.1 for <pve-devel@lists.proxmox.com>; Mon, 24 Feb 2025 08:58:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adfinis.com; s=google; t=1740416326; x=1741021126; darn=lists.proxmox.com; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wPJCK1udtG4sHNItKdra/qO+Utvo7sfeCWITnzfE+sU=; b=XCxwqoM8G6mliKY1jO1pR/fDqCra0PJVjEOlgpmDvL00ut9ZP/3CPAiKD69hhbMndH 7mia1JMzYrz8PsLgxRoxKwQ0/UFTCjDRiFSm0E+QZSbxnVZqF9ledcP+tk3Z5r4WWQ+B KT0dunZShnlZruxpngcRufmPn/ueuy/rL2MBNNedDJSM4wP27MODuWmXlz76PjgG3Mnr CLL7X9c4vzQ0n2arY2ctlUPgxZEVwdV/CZtVNBDxa1W/cGguq0jmC9xbBZKsjePnS0Hj jLKQ8gCsoRPZv28y8iKKT829na2qUnsJkgrTXc9LWz9/tvFI/LFOi9qHvs5l2Z+P1yuF 37Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740416326; x=1741021126; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wPJCK1udtG4sHNItKdra/qO+Utvo7sfeCWITnzfE+sU=; b=BU/V7nRlhD01npYc4bR9xyhB3UWBVcKiKJpevpAkk6Bl71N3abWd/DRXFcHb36tjWZ zWxfq6iEYygzB8uIm7jMET399JiIJou2MJe+Z0hp4i3Nkcm1FlKDj/QjhAz3FOqu6Zp0 w5OcK028CPPYgrYCg33g/AUuwkMWg9UZwrA7kYWTLuzhAUCXguC+njv9YI0a2xDoQGIW xHXabgOQYj2ZWrumpIFdV9LOcBwmISXOkqB403BWw57xnd4BtvT/pmVeOiLpkXsupAYX OftgrcP6Mw6REd8vg8IwQOFyYypNEfNQXzql4Xpd1vHZkcbyQuY1K1PRlKPafjQWNxeU s+6Q== X-Gm-Message-State: AOJu0Yyz1I4JC1EPt79qd+iVu9B1xJtQci+SNmnMKPLF8MVeNznrzEAE h7RMomNYLS4/Vvexuq5VqX/39mrj4isEaT1XNJ0hOI9uO3mFgZpxhA1KfLJDNANhtPIn3yJG5Yf f X-Gm-Gg: ASbGncse7PBX1YhEyK5XHYXAeSHE0MuA9cRn+LwrSC7n6IAg4f4JNs3NXumA4i9I41U whFgrKkMPQsopgyVUYp+Ky9RawbgtaXfmWX99kX9UjErZqv9B/RBoBCeO7BAV8HAd9oHeL2IhwK TDT/jFjucXIUlUGWE5XRokDxUD2s24OPXsOzPf2o9eiIb/S30BoLjw/4qOmQEqnmwD6CCZVO79k nkf3fYTthX+aVPm47hXv8vfiXsntBpYLiQ29m9ylg+fxMPOvOwHnEJoUkoTlPlb0bl6CollNu3L I8o6p/NfHMofakl8yvIwKzMNQk3ls0kC X-Google-Smtp-Source: AGHT+IGt4QThPiIzTY8w+2wmLHVaUAhrdaSG/B9leY63iv33WsLWZMOZ1ufFAgolw6Re0kdw1aMa5w== X-Received: by 2002:a05:6402:2750:b0:5e0:9269:f54e with SMTP id 4fb4d7f45d1cf-5e0b70d7026mr13240118a12.14.1740416326129; Mon, 24 Feb 2025 08:58:46 -0800 (PST) Received: from localhost ([178.197.194.59]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5dece1b4e8dsm18539532a12.14.2025.02.24.08.58.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 24 Feb 2025 08:58:45 -0800 (PST) From: jonahz <jonah.zuercher@adfinis.com> To: pve-devel@lists.proxmox.com Cc: jonahz <jonah.zuercher@adfinis.com> Subject: [PATCH container 1/1] fix #5496: sdn: fix netbox integration Date: Mon, 24 Feb 2025 17:58:25 +0100 Message-ID: <20250224165825.82940-2-jonah.zuercher@adfinis.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250224165825.82940-1-jonah.zuercher@adfinis.com> References: <20250224165825.82940-1-jonah.zuercher@adfinis.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record X-Mailman-Approved-At: Tue, 25 Feb 2025 13:16:30 +0100 This fixes a bug which currently prevents the netbox plugin from assigning an IP correctly. It also makes sure to create an IP range, if none exists for the configured DHCP range. Signed-off-by: jonahz <jonah.zuercher@adfinis.com> --- src/PVE/Network/SDN/Ipams/NetboxPlugin.pm | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/PVE/Network/SDN/Ipams/NetboxPlugin.pm b/src/PVE/Network/SDN/Ipams/NetboxPlugin.pm index d923269..c391068 100644 --- a/src/PVE/Network/SDN/Ipams/NetboxPlugin.pm +++ b/src/PVE/Network/SDN/Ipams/NetboxPlugin.pm @@ -151,7 +151,7 @@ sub add_next_freeip { my $params = { dns_name => $hostname, description => $description }; - eval { + my $ip = eval { my $result = PVE::Network::SDN::api_request("POST", "$url/ipam/prefixes/$internalid/available-ips/", $headers, $params); my ($ip, undef) = split(/\//, $result->{address}); return $ip; @@ -160,6 +160,8 @@ sub add_next_freeip { if ($@) { die "can't find free ip in subnet $cidr: $@" if !$noerr; } + + return $ip; } sub add_range_next_freeip { @@ -170,11 +172,24 @@ sub add_range_next_freeip { my $headers = ['Content-Type' => 'application/json; charset=UTF-8', 'Authorization' => "token $token"]; my $internalid = get_iprange_id($url, $range, $headers); + # create range if it doesn't exist + if (!$internalid) { + my $cidr = (split(/\//, $subnet->{cidr}))[1]; + my $params = { start_address => "$range->{'start-address'}/$cidr", end_address => "$range->{'end-address'}/$cidr" }; + eval { + my $result = PVE::Network::SDN::api_request("POST", "$url/ipam/ip-ranges/", $headers, $params); + $internalid = $result->{id}; + }; + if ($@) { + die "error add range to ipam: $@" if !$noerr; + } + } + my $description = "mac:$data->{mac}" if $data->{mac}; my $params = { dns_name => $data->{hostname}, description => $description }; - eval { + my $ip = eval { my $result = PVE::Network::SDN::api_request("POST", "$url/ipam/ip-ranges/$internalid/available-ips/", $headers, $params); my ($ip, undef) = split(/\//, $result->{address}); print "found ip free $ip in range $range->{'start-address'}-$range->{'end-address'}\n" if $ip; @@ -184,6 +199,8 @@ sub add_range_next_freeip { if ($@) { die "can't find free ip in range $range->{'start-address'}-$range->{'end-address'}: $@" if !$noerr; } + + return $ip; } sub del_ip { -- 2.48.1 --===============5913751118052367451== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel --===============5913751118052367451==--