From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup] api: tape: don't allow overwriting of ids in changer/drive config
Date: Wed, 6 Mar 2024 09:47:02 +0100 [thread overview]
Message-ID: <20240306084702.940876-1-d.csapak@proxmox.com> (raw)
by checking the whole section config for an existing id, not only the
ones of the given type.
This prevents creation of a drive config with the same name as an
existing changer and vice versa.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/api2/config/changer.rs | 8 ++++----
src/api2/config/drive.rs | 7 ++++---
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/api2/config/changer.rs b/src/api2/config/changer.rs
index db0ea14a..91286697 100644
--- a/src/api2/config/changer.rs
+++ b/src/api2/config/changer.rs
@@ -33,6 +33,10 @@ pub fn create_changer(config: ScsiTapeChanger) -> Result<(), Error> {
let (mut section_config, _digest) = pbs_config::drive::config()?;
+ if section_config.sections.get(&config.name).is_some() {
+ param_bail!("name", "Entry '{}' already exists", config.name);
+ }
+
let linux_changers = linux_tape_changer_list();
check_drive_path(&linux_changers, &config.path)?;
@@ -40,10 +44,6 @@ pub fn create_changer(config: ScsiTapeChanger) -> Result<(), Error> {
let existing: Vec<ScsiTapeChanger> = section_config.convert_to_typed_array("changer")?;
for changer in existing {
- if changer.name == config.name {
- param_bail!("name", "Entry '{}' already exists", config.name);
- }
-
if changer.path == config.path {
param_bail!(
"path",
diff --git a/src/api2/config/drive.rs b/src/api2/config/drive.rs
index 02589aaf..cf620aaf 100644
--- a/src/api2/config/drive.rs
+++ b/src/api2/config/drive.rs
@@ -34,6 +34,10 @@ pub fn create_drive(config: LtoTapeDrive) -> Result<(), Error> {
let (mut section_config, _digest) = pbs_config::drive::config()?;
+ if section_config.sections.get(&config.name).is_some() {
+ param_bail!("name", "Entry '{}' already exists", config.name);
+ }
+
let lto_drives = lto_tape_device_list();
check_drive_path(<o_drives, &config.path)?;
@@ -41,9 +45,6 @@ pub fn create_drive(config: LtoTapeDrive) -> Result<(), Error> {
let existing: Vec<LtoTapeDrive> = section_config.convert_to_typed_array("lto")?;
for drive in existing {
- if drive.name == config.name {
- param_bail!("name", "Entry '{}' already exists", config.name);
- }
if drive.path == config.path {
param_bail!(
"path",
--
2.39.2
next reply other threads:[~2024-03-06 8:47 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-06 8:47 Dominik Csapak [this message]
2024-03-06 8:56 ` Thomas Lamprecht
2024-03-06 9:09 ` Dominik Csapak
2024-03-06 9:24 ` Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240306084702.940876-1-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal