use AptPkg::System;
my $get_apt_cache = sub {
-
+
my $apt_cache = AptPkg::Cache->new() || die "unable to initialize AptPkg::Cache\n";
return $apt_cache;
use base qw(PVE::RESTHandler);
__PACKAGE__->register_method({
- name => 'index',
- path => '',
+ name => 'index',
+ path => '',
method => 'GET',
description => "Directory index for apt (Advanced Package Tool).",
permissions => {
user => 'all',
},
parameters => {
- additionalProperties => 0,
+ additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
},
code => sub {
my ($param) = @_;
- my $res = [
+ my $res = [
{ id => 'changelog' },
{ id => 'update' },
{ id => 'versions' },
my $srcpkg = $info->{SourcePkg} || $pkgname;
if ($origin eq 'Debian') {
$base =~ s!pool/updates/!pool/!; # for security channel
- $changelog_url = "http://packages.debian.org/changelogs/$base/" .
- "${srcpkg}_${pkgver}/changelog";
+ $changelog_url = "http://packages.debian.org/changelogs/$base/${srcpkg}_${pkgver}/changelog";
} elsif ($origin eq 'Proxmox') {
if ($component eq 'pve-enterprise') {
- $changelog_url = "https://enterprise.proxmox.com/debian/$base/" .
- "${pkgname}_${pkgver}.changelog";
+ $changelog_url = "https://enterprise.proxmox.com/debian/$base/${pkgname}_${pkgver}.changelog";
} else {
- $changelog_url = "http://download.proxmox.com/debian/$base/" .
- "${pkgname}_${pkgver}.changelog";
+ $changelog_url = "http://download.proxmox.com/debian/$base/${pkgname}_${pkgver}.changelog";
}
}
}
my $assemble_pkginfo = sub {
my ($pkgname, $info, $current_ver, $candidate_ver) = @_;
- my $data = {
+ my $data = {
Package => $info->{Name},
Title => $info->{ShortDesc},
Origin => 'unknown',
if (my $pkgfile = &$get_pkgfile($candidate_ver)) {
$data->{Origin} = $pkgfile->{Origin};
- if (my $changelog_url = &$get_changelog_url($pkgname, $info, $candidate_ver->{VerStr},
+ if (my $changelog_url = &$get_changelog_url($pkgname, $info, $candidate_ver->{VerStr},
$pkgfile->{Origin}, $pkgfile->{Component})) {
$data->{ChangeLogUrl} = $changelog_url;
}
$desc =~ s/\n / /g;
$data->{Description} = $desc;
}
-
+
foreach my $k (qw(Section Arch Priority)) {
$data->{$k} = $candidate_ver->{$k};
}
};
__PACKAGE__->register_method({
- name => 'list_updates',
- path => 'update',
+ name => 'list_updates',
+ path => 'update',
method => 'GET',
description => "List available updates.",
permissions => {
protected => 1,
proxyto => 'node',
parameters => {
- additionalProperties => 0,
+ additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
},
if (my $st1 = File::stat::stat($pve_pkgstatus_fn)) {
my $st2 = File::stat::stat("/var/cache/apt/pkgcache.bin");
my $st3 = File::stat::stat("/var/lib/dpkg/status");
-
+
if ($st2 && $st3 && $st2->mtime <= $st1->mtime && $st3->mtime <= $st1->mtime) {
if (my $data = &$read_cached_pkgstatus()) {
return $data;
}});
__PACKAGE__->register_method({
- name => 'update_database',
- path => 'update',
+ name => 'update_database',
+ path => 'update',
method => 'POST',
description => "This is used to resynchronize the package index files from their sources (apt-get update).",
permissions => {
protected => 1,
proxyto => 'node',
parameters => {
- additionalProperties => 0,
+ additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
notify => {
my $cmd = ['apt-get', 'update'];
print "starting apt-get update\n" if !$param->{quiet};
-
+
if ($param->{quiet}) {
PVE::Tools::run_command($cmd, outfunc => sub {}, errfunc => sub {});
} else {
}});
__PACKAGE__->register_method({
- name => 'changelog',
- path => 'changelog',
+ name => 'changelog',
+ path => 'changelog',
method => 'GET',
description => "Get package changelogs.",
permissions => {
},
proxyto => 'node',
parameters => {
- additionalProperties => 0,
+ additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
name => {
description => "Package version.",
type => 'string',
optional => 1,
- },
+ },
},
},
returns => {
if ($info->{status} eq 'Active') {
$username = $info->{key};
$pw = PVE::API2Tools::get_hwaddress();
- $ua->credentials("enterprise.proxmox.com:443", 'pve-enterprise-repository',
- $username, $pw);
+ $ua->credentials("enterprise.proxmox.com:443", 'pve-enterprise-repository', $username, $pw);
}
}
}});
__PACKAGE__->register_method({
- name => 'versions',
- path => 'versions',
+ name => 'versions',
+ path => 'versions',
method => 'GET',
proxyto => 'node',
description => "Get package information for important Proxmox packages.",
check => ['perm', '/nodes/{node}', [ 'Sys.Audit' ]],
},
parameters => {
- additionalProperties => 0,
+ additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
},
# add the rest ordered by name, easier to find for humans
push @list, (sort @pkgs, @opt_pack);
-
+
my (undef, undef, $kernel_release) = POSIX::uname();
my $pvever = PVE::pvecfg::version_text();
my $candidate_ver = defined($p) ? $policy->candidate($p) : undef;
my $res;
if (my $current_ver = $p->{CurrentVer}) {
- $res = &$assemble_pkginfo($pkgname, $info, $current_ver,
- $candidate_ver || $current_ver);
+ $res = $assemble_pkginfo->($pkgname, $info, $current_ver, $candidate_ver || $current_ver);
} elsif ($candidate_ver) {
- $res = &$assemble_pkginfo($pkgname, $info, $candidate_ver,
- $candidate_ver);
+ $res = $assemble_pkginfo->($pkgname, $info, $candidate_ver, $candidate_ver);
delete $res->{OldVersion};
} else {
next;