From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 4B6BE60049 for ; Wed, 2 Dec 2020 11:52:05 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3C33F1A420 for ; Wed, 2 Dec 2020 11:51:35 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (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 id 915111A403 for ; Wed, 2 Dec 2020 11:51:33 +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 5DFBC448B3 for ; Wed, 2 Dec 2020 11:51:33 +0100 (CET) From: Thomas Lamprecht To: pve-devel@lists.proxmox.com Date: Wed, 2 Dec 2020 11:51:21 +0100 Message-Id: <20201202105122.1132809-6-t.lamprecht@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201202105122.1132809-1-t.lamprecht@proxmox.com> References: <20201202105122.1132809-1-t.lamprecht@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.077 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [hardware.pm, usb.pm, defines.mk, pci.pm, proxmox.com] Subject: [pve-devel] applied: [PATCH manager 5/6] api: add usb list in hardware endpoint 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: , X-List-Received-Date: Wed, 02 Dec 2020 10:52:05 -0000 As envisioned in[0][1], better late than never. [0]: commit 3bca5efd9c219d97c2eac5685bf6cac579a3b0f1 [1]: https://lists.proxmox.com/pipermail/pve-devel/2018-November/034694.html Signed-off-by: Thomas Lamprecht --- PVE/API2/Hardware.pm | 9 ++++++- PVE/API2/Hardware/Makefile | 3 ++- PVE/API2/Hardware/USB.pm | 53 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 PVE/API2/Hardware/USB.pm diff --git a/PVE/API2/Hardware.pm b/PVE/API2/Hardware.pm index d2b8c45a..f59bfbe0 100644 --- a/PVE/API2/Hardware.pm +++ b/PVE/API2/Hardware.pm @@ -7,6 +7,7 @@ use PVE::JSONSchema qw(get_standard_option); use PVE::RESTHandler; use PVE::API2::Hardware::PCI; +use PVE::API2::Hardware::USB; use base qw(PVE::RESTHandler); @@ -15,6 +16,12 @@ __PACKAGE__->register_method ({ path => 'pci', }); +__PACKAGE__->register_method ({ + subclass => "PVE::API2::Hardware::USB", + path => 'usb', +}); + + __PACKAGE__->register_method ({ name => 'index', path => '', @@ -42,7 +49,7 @@ __PACKAGE__->register_method ({ my $res = [ { type => 'pci' }, - # TODO: move usb scan here (6.0 api change) + { type => 'usb' }, ]; return $res; diff --git a/PVE/API2/Hardware/Makefile b/PVE/API2/Hardware/Makefile index 2dc824b9..d27d2201 100644 --- a/PVE/API2/Hardware/Makefile +++ b/PVE/API2/Hardware/Makefile @@ -1,7 +1,8 @@ include ../../../defines.mk PERLSOURCE= \ - PCI.pm + PCI.pm \ + USB.pm \ all: diff --git a/PVE/API2/Hardware/USB.pm b/PVE/API2/Hardware/USB.pm new file mode 100644 index 00000000..d7cb6607 --- /dev/null +++ b/PVE/API2/Hardware/USB.pm @@ -0,0 +1,53 @@ +package PVE::API2::Hardware::USB; + +use strict; +use warnings; + +use PVE::JSONSchema qw(get_standard_option); + +use PVE::SysFSTools; + +use base qw(PVE::RESTHandler); + +__PACKAGE__->register_method({ + name => 'usbscan', + path => '', + method => 'GET', + description => "List local USB devices.", + protected => 1, + proxyto => "node", + permissions => { + check => ['perm', '/', ['Sys.Modify']], + }, + parameters => { + additionalProperties => 0, + properties => { + node => get_standard_option('pve-node'), + }, + }, + returns => { + type => 'array', + items => { + type => "object", + properties => { + busnum => { type => 'integer'}, + class => { type => 'integer'}, + devnum => { type => 'integer'}, + level => { type => 'integer'}, + manufacturer => { type => 'string', optional => 1 }, + port => { type => 'integer'}, + prodid => { type => 'string'}, + product => { type => 'string', optional => 1 }, + serial => { type => 'string', optional => 1 }, + speed => { type => 'string'}, + usbpath => { type => 'string', optional => 1}, + vendid => { type => 'string'}, + }, + }, + }, + code => sub { + my ($param) = @_; + + return PVE::SysFSTools::scan_usb(); + } +}); -- 2.20.1