public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fabian Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [RFC manager 3/7] api: APT: add call to list repositories
Date: Wed, 20 Jan 2021 11:01:39 +0100	[thread overview]
Message-ID: <20210120100143.16268-4-f.ebner@proxmox.com> (raw)
In-Reply-To: <20210120100143.16268-1-f.ebner@proxmox.com>

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---

There is both metadata (path, number, enabled) and actual data (Suites,
Components, etc.) for a repository. The actual data parts are capitalized.
This makes parsing from the DEB-822 format a bit easier, and as a side effect
distinguishes metadata and actual data. An alternative would be to introduce
nesting in the result like

    {
	path =>
	number =>
	enabled =>
	repodata => {
	    suites =>
	    types =>
	}
    }

but having a flat result makes handling in the UI code easier. Is the current
approach fine or does it need to be uniform or should there be nesting?
Since the UI code should be reused for PBS, this question also affects the
not-yet-written Rust code.

 PVE/API2/APT.pm | 69 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/PVE/API2/APT.pm b/PVE/API2/APT.pm
index fb4954e7..e92770ca 100644
--- a/PVE/API2/APT.pm
+++ b/PVE/API2/APT.pm
@@ -12,6 +12,7 @@ use LWP::UserAgent;
 
 use PVE::pvecfg;
 use PVE::Tools qw(extract_param);
+use PVE::APT;
 use PVE::Cluster;
 use PVE::DataCenterConfig;
 use PVE::SafeSyslog;
@@ -67,6 +68,7 @@ __PACKAGE__->register_method({
 	my $res = [ 
 	    { id => 'changelog' },
 	    { id => 'update' },
+	    { id => 'repositories' },
 	    { id => 'versions' },
 	];
 
@@ -478,6 +480,73 @@ __PACKAGE__->register_method({
 	return $data;
     }});
 
+__PACKAGE__->register_method({
+    name => 'repositories',
+    path => 'repositories',
+    method => 'GET',
+    proxyto => 'node',
+    description => "Get APT repository information.",
+    permissions => {
+	check => ['perm', '/nodes/{node}', [ 'Sys.Audit' ]],
+    },
+    parameters => {
+	additionalProperties => 0,
+	properties => {
+	    node => get_standard_option('pve-node'),
+	},
+    },
+    returns => {
+	type => "array",
+	description => "List of configured repositories.",
+	items => {
+	    type => "object",
+	    properties => {
+		path => {
+		    type => 'string',
+		    description => "Path to the file that defines the repository.",
+		},
+		number => {
+		    type => 'integer',
+		    description => "Line or stanza number.",
+		},
+		enabled => {
+		    type => 'boolean',
+		},
+		comment => {
+		    type => 'string',
+		    optional => 1,
+		},
+		Types => {
+		    type => 'string',
+		    description => "List of repository types.",
+		},
+		URIs => {
+		    type => 'string',
+		    description => "List of repository URIs.",
+		},
+		Suites => {
+		    type => 'string',
+		    description => "List of repository suites.",
+		},
+		Components => {
+		    type => 'string',
+		    description => "List of repository components. Needs to " .
+			"be empty when the suite is absolute.",
+		    optional => 1,
+		},
+		Options => {
+		    type => 'object',
+		    description => "Further options for APT.",
+		},
+	    },
+	},
+    },
+    code => sub {
+	my ($param) = @_;
+
+	return PVE::APT::list_repositories();
+    }});
+
 __PACKAGE__->register_method({
     name => 'versions', 
     path => 'versions', 
-- 
2.20.1





  parent reply	other threads:[~2021-01-20 10:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-20 10:01 [pve-devel] [RFC] APT repositories API/UI Fabian Ebner
2021-01-20 10:01 ` [pve-devel] [RFC common 1/7] add module for APT Fabian Ebner
2021-01-20 10:01 ` [pve-devel] [RFC common 2/7] APT: add extended repositories check Fabian Ebner
2021-01-20 10:01 ` Fabian Ebner [this message]
2021-01-20 10:01 ` [pve-devel] [RFC widget-toolkit 4/7] add UI for APT repositories Fabian Ebner
2021-01-20 10:01 ` [pve-devel] [RFC manager 5/7] ui: add panel for listing " Fabian Ebner
2021-01-20 10:01 ` [pve-devel] [RFC manager 6/7] api: APT: add call for repository check Fabian Ebner
2021-01-20 10:01 ` [pve-devel] [RFC widget-toolkit 7/7] APT repositories: show list of warnings Fabian Ebner

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=20210120100143.16268-4-f.ebner@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal