Compare commits

...

38 Commits

Author SHA1 Message Date
Thomas Lamprecht
789b4067be bump version to 4.4-24 2018-05-30 12:02:51 +02:00
Thomas Lamprecht
a6ff957eec eol followup: use full spelt date and name 2018-05-30 12:00:33 +02:00
Thomas Lamprecht
8a8e05ea55 bump version to 4.4-23 2018-05-30 10:59:09 +02:00
Thomas Lamprecht
5a4c95b7f9 eol: followup: readd PVE and balance 2018-05-30 10:57:41 +02:00
Dominik Csapak
cc9b37b811 add eol notice
since pve 4.4 goes out of support in june, add a notice at the top with
a link to the faq, where the EOL dates are

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-05-30 09:52:40 +02:00
Fabian Grünbichler
c637df65ab bump version to 4.4-22 2018-01-17 09:18:17 +01:00
Dominik Csapak
2d8d4d8acf add spec-ctrl cpu flag checkbox
also make the mechanism for the flag checkboxes generic

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Reviewed-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Tested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
(cherry picked from commit ba920c35763ca8d8f913592d09c286e076bf6edf)
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2018-01-17 09:17:32 +01:00
Fabian Grünbichler
06c8407f14 bump version to 4.4-21 2018-01-10 13:49:37 +01:00
Dominik Csapak
71379590cd add PCID checkbox to ProcessorEdit
but not in wizard, and default is off
(because we do not know if the cpu supports it)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2018-01-10 13:48:42 +01:00
Wolfgang Bumiller
95316d130b bump version to 4.4-20
(19 was an internal between-merge version)
2017-11-22 14:06:38 +01:00
Dominik Csapak
6befdf6834 make ssh connection transparent
do not use an escape character for the host shell

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-17 10:37:43 +01:00
Dominik Csapak
a83717b705 fix #1539: add missing shellquote for proxied commands of pvesh
if we do not do this, passing arguments with spaces
(e.g., pvesh set YYY --param "one word")
leads to ssh calls like this:
ssh REMOTE pvesh set YYY --param one word

which cannot be parsed correctly

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-10-31 09:02:39 +01:00
Dominik Csapak
b0e8265c66 fix #1531: match nodename exactly for vmidselector
else we would get vms for wrong hosts if the nodename is a pre/postfix
of another nodename (e.g. 'abc' and 'abc123')

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-10-16 11:26:33 +02:00
Fabian Grünbichler
c2e5b9384e fix start on boot
fix the fix for #1024

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
(cherry picked from commit e7fe107f75ee1bb9877b0d6430489661d6c1beea)
2017-09-08 11:34:19 +02:00
Thomas Lamprecht
f92f0a357a remove backup locks when starting all VMs on boot
If on bootup one of our VMs is locked by an backup we safely can
assume that this backup job does not run anymore and that the lock
has no reason anymore and just hinders uptime of services.

As at this time we (the node) have quorum so we may safely assume
that we have a consistent view of the cluster and all our VMs really
belong to us. We just need to ensure that we do not run into an
automatic backup jobs, so execute our code with VZDumps lock or
timeout.
Log in the Task and Sys log that we removed the lock, so that an
admin easily sees that there may be need for cleaning leftovers from
an interrupted backup.

Addresses bug #1024

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
(cherry picked from commit 248b2d361407d07b6d41138ab2912b6a0e66ae6d)
2017-09-08 11:34:10 +02:00
Thomas Lamprecht
2edea01c78 get_filtered_vmlist: save VM conf in own subhash
small refactoring in get_filtered_vmlist: save a VMs config in its
own subhash to avoid collisions with other data which we want to save
in the vmid list, for now this is only `type` but in the next patch
I want to save also the class

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
(cherry picked from commit 627fa10467a1578c5a3c7d2a292bbe6f14a881ca)
2017-09-08 11:34:02 +02:00
Fabian Grünbichler
a99170e1aa bump version to 4.4-18 2017-08-21 10:31:56 +02:00
Dominik Csapak
ff57d36977 fix creating the first ceph monitor
we cannot use a rados connection before having at least one monitor,
so we have to move it down

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(backported from commit 738ce0f235daf46aecedab3e33147d871d3959fa)
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2017-08-21 10:27:02 +02:00
Dominik Csapak
a898d93362 add missing '-' to service name pattern
since ids can contain '-', we have to include them in the pattern
for the service names

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(cherry picked from commit 38e20dad713db1024eb91fb9a1becd07f9c940df)
2017-08-21 10:23:06 +02:00
Fabian Grünbichler
b6ccf28a9b bump version to 4.4-17 2017-08-14 14:56:40 +02:00
Alwin Antreich
588ea81cb8 check for ceph-mgr on destroymon
Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
2017-08-14 14:55:47 +02:00
Fabian Grünbichler
81564a937b bump version to 4.4-16 2017-08-14 13:50:48 +02:00
Wolfgang Bumiller
9005ced966 Revert "trust StartCom_Certification_Authority_2.crt"
This reverts commit 7637ce6464bc28c3651b5884c3fbf2fac6ed5b66.

Revert "add missing file"

This reverts commit 7599e35af893ad9d8b544a05d5289da4093749e4.

We've switched to Let's Encrypt.

postinst configure: run update-ca-certificates if the
  previous version is <= 5.0-23.

(cherry picked from commit 088597a355c9af240d764aa1262b393e8716e0f0)

backported version check to 4.4-15
2017-08-14 13:48:02 +02:00
Fabian Grünbichler
a946e039d5 build: ensure REPOID has a length of 8
because unlike the git-rev-parse man page says, the default
length is actually calculated based on the number of packed
objects in the clone of the repository.

we don't want this to depend on the build environment and
how the repository was cloned there, so fix a length of 8
for now.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
(cherry picked from commit d0ad008702ecea7f5194b797748adc746de2da86)
2017-08-14 13:45:50 +02:00
Dominik Csapak
a0f4e1d543 use git rev-parse for repoid
instead of getting the repoid from .git/refs/heads/master

using HEAD as commit also means we get the correct commit hash for when
building the package (e.g. when building from stable-4)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(cherry picked from commit a09735e0b52f57c440c81b5d3b3f3dfea11e5345)
2017-08-14 13:45:43 +02:00
Alwin Antreich
dd6b15f218 add check if ceph-mgr is installed
in API endpoints createmgr/destroymgr/createmon

Signed-off-by: Alwin Antreich <a.antreich@proxmox.com>
2017-08-14 11:10:38 +02:00
Dominik Csapak
100800ee37 pveceph: add createmgr/destroymgr commands
this patch adds the create-/destroymgr commands to the api and pveceph,
so that advanced users can split monitor and manager daemons

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(cherry picked from commit ad9411c9480aa8f9b5fdbf677e0fb4a1e6997cb7)
2017-08-14 11:10:38 +02:00
Dominik Csapak
5e33f7cea8 pveceph: create mgr with mon, use nodename for id
we now want to add a ceph-mgr daemon to every node where a ceph-mon
daemon runs, as per ceph documentation recommendation, because in
luminous the mgr daemons will not be automatically created/started
with a monitor anymore

we also give the createmon an optional id parameter, so that one
can set a custom id, and make the creation/removal of the manager
optional but the default

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(cherry picked from commit f77a087446390840846cd9300ce3dbe7f4bc7fd6)
2017-08-14 11:10:38 +02:00
Dietmar Maurer
d58ced8ae5 bump version to 4.4-15 2017-07-05 08:48:28 +02:00
Dietmar Maurer
7f50af07b8 trust StartCom_Certification_Authority_2.crt
(cherry picked from commit 7637ce6464bc28c3651b5884c3fbf2fac6ed5b66)

and added file StartCom_Certification_Authority_2.crt

(cherry picked from commit 7599e35af893ad9d8b544a05d5289da4093749e4)
2017-07-05 08:44:03 +02:00
Dietmar Maurer
5a81114b1f bump version to 4.4-14 2017-06-19 07:17:22 +02:00
Dietmar Maurer
67ccc7d9e6 update default aplinfo.dat
(cherry picked from commit ee26ef44522f4c8a766d597e259a945cc2986ec9)
2017-06-19 07:12:55 +02:00
Dominik Csapak
a237623964 fix #1414: use table layout instead of columns
columns with fixed widths do not resize correctly in chrome when
resizing or having a different dpi scaling

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-14 09:46:19 +02:00
Emmanuel Kasper
20fdfefad4 Do not internationalize 'Pools' when used in Ceph Context
This is a Ceph domain term and should not be translated like OSD, ...
Galician had "Virtual Groups" for Pools, which does not apply for
Ceph Context.
Also most languages were using 'Pools' anyway.
2017-06-02 10:10:23 +02:00
Dominik Csapak
5cad62a636 remove "read-only" option from container root disk
with root-only enabled, you cannot start the conainer anymore,
so we remove it there entirely

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 09:34:58 +02:00
Dominik Csapak
f360ab33e3 fix #1317: check wizard form also on validitychange
with the commit
    40342aa6c4278497b9ec8c9cce8739f9b29c2e8f
we introduced a validator on the guestidselector, but did not
notice that the wizard checks the validity on the field change event,
but the selector gets valid/invalid in an api callback(so a little later)

with this patch, we now validate the field correctly with validate()
and also listen on the validitychange event to catch it

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(cherry picked from commit c5dc0be54ca75a11af86e7bbf1590407157c11b1)
2017-03-27 08:34:14 +02:00
Dominik Csapak
a6a6dedeef fix #1307: dont use language dependent separator in gui
by default, extjs submits the language dependent decimal separator,
e.g. ',' for german and '.' for english

but we always want '.'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
(cherry picked from commit 5c660b6d1302a5fbb3dcf477cf8b5adc9f798530)
2017-03-21 13:58:23 +01:00
Wolfgang Bumiller
1d9bdf9dc6 update make upload target 2017-03-13 14:22:49 +01:00
25 changed files with 503 additions and 74 deletions

View File

@ -48,12 +48,12 @@ $(DEB):
mv dest.deb ${DEB}
rm -rf dest
# supress lintian error: statically-linked-binary usr/bin/pvemailforward
lintian -X binaries ${DEB}
lintian -X binaries ${DEB}
.PHONY: upload
upload: ${DEB} check
./repoid.pl .git check
tar cf - ${DEB} | ssh repoman@repo.proxmox.com upload
tar cf - ${DEB} | ssh repoman@repo.proxmox.com upload -product pve -dist jessie
#.PHONY: poupload
#poupload:

View File

@ -809,11 +809,63 @@ my $find_node_ip = sub {
die "unable to find local address within network '$cidr'\n";
};
my $create_mgr = sub {
my ($rados, $id) = @_;
my $clustername = PVE::CephTools::get_config('ccname');
my $mgrdir = "/var/lib/ceph/mgr/$clustername-$id";
my $mgrkeyring = "$mgrdir/keyring";
my $mgrname = "mgr.$id";
die "ceph manager directory '$mgrdir' already exists\n"
if -d $mgrdir;
print "creating manager directory '$mgrdir'\n";
mkdir $mgrdir;
print "creating keys for '$mgrname'\n";
my $output = $rados->mon_command({ prefix => 'auth get-or-create',
entity => $mgrname,
caps => [
mon => 'allow profile mgr',
osd => 'allow *',
mds => 'allow *',
],
format => 'plain'});
PVE::Tools::file_set_contents($mgrkeyring, $output);
print "setting owner for directory\n";
run_command(["chown", 'ceph:ceph', '-R', $mgrdir]);
print "enabling service 'ceph-mgr\@$id.service'\n";
PVE::CephTools::ceph_service_cmd('enable', $mgrname);
print "starting service 'ceph-mgr\@$id.service'\n";
PVE::CephTools::ceph_service_cmd('start', $mgrname);
};
my $destroy_mgr = sub {
my ($mgrid) = @_;
my $clustername = PVE::CephTools::get_config('ccname');
my $mgrname = "mgr.$mgrid";
my $mgrdir = "/var/lib/ceph/mgr/$clustername-$mgrid";
die "ceph manager directory '$mgrdir' not found\n"
if ! -d $mgrdir;
print "disabling service 'ceph-mgr\@$mgrid.service'\n";
PVE::CephTools::ceph_service_cmd('disable', $mgrname);
print "stopping service 'ceph-mgr\@$mgrid.service'\n";
PVE::CephTools::ceph_service_cmd('stop', $mgrname);
print "removing manager directory '$mgrdir'\n";
File::Path::remove_tree($mgrdir);
};
__PACKAGE__->register_method ({
name => 'createmon',
path => 'mon',
method => 'POST',
description => "Create Ceph Monitor",
description => "Create Ceph Monitor and Manager",
proxyto => 'node',
protected => 1,
permissions => {
@ -823,6 +875,18 @@ __PACKAGE__->register_method ({
additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
id => {
type => 'string',
optional => 1,
pattern => '[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?',
description => "The ID for the monitor, when omitted the same as the nodename",
},
'exclude-manager' => {
type => 'boolean',
optional => 1,
default => 0,
description => "When set, only a monitor will be created.",
},
},
},
returns => { type => 'string' },
@ -856,14 +920,7 @@ __PACKAGE__->register_method ({
}
}
my $monid;
for (my $i = 0; $i < 7; $i++) {
if (!$cfg->{"mon.$i"}) {
$monid = $i;
last;
}
}
die "unable to find usable monitor id\n" if !defined($monid);
my $monid = $param->{id} // $param->{node};
my $monsection = "mon.$monid";
my $ip;
@ -909,7 +966,7 @@ __PACKAGE__->register_method ({
-d $mondir && die "monitor filesystem '$mondir' already exist\n";
my $monmap = "/tmp/monmap";
eval {
mkdir $mondir;
@ -947,6 +1004,12 @@ __PACKAGE__->register_method ({
eval { PVE::Tools::run_command(['/bin/systemctl', 'enable', "ceph-mon\@${monid}.service"]); };
warn "Enable ceph-mon\@${monid}.service manually"if $@;
}
# create manager
if (!$param->{'exclude-manager'} && PVE::CephTools::check_ceph_mgr_installed(1)) {
my $rados = PVE::RADOS->new(timeout => PVE::CephTools::get_config('long_rados_timeout'));
$create_mgr->($rados, $monid);
}
};
return $rpcenv->fork_worker('cephcreatemon', $monsection, $authuser, $worker);
@ -956,7 +1019,7 @@ __PACKAGE__->register_method ({
name => 'destroymon',
path => 'mon/{monid}',
method => 'DELETE',
description => "Destroy Ceph monitor.",
description => "Destroy Ceph Monitor and Manager.",
proxyto => 'node',
protected => 1,
permissions => {
@ -968,8 +1031,15 @@ __PACKAGE__->register_method ({
node => get_standard_option('pve-node'),
monid => {
description => 'Monitor ID',
type => 'integer',
type => 'string',
pattern => '[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?',
},
'exclude-manager' => {
type => 'boolean',
default => 0,
optional => 1,
description => "When set, removes only the monitor, not the manager"
}
},
},
returns => { type => 'string' },
@ -1015,11 +1085,108 @@ __PACKAGE__->register_method ({
delete $cfg->{$monsection};
PVE::CephTools::write_ceph_config($cfg);
File::Path::remove_tree($mondir);
# remove manager
if (!$param->{'exclude-manager'} && PVE::CephTools::check_ceph_mgr_installed(1)) {
eval { $destroy_mgr->($monid); };
warn $@ if $@;
}
};
return $rpcenv->fork_worker('cephdestroymon', $monsection, $authuser, $worker);
}});
__PACKAGE__->register_method ({
name => 'createmgr',
path => 'mgr',
method => 'POST',
description => "Create Ceph Manager",
proxyto => 'node',
protected => 1,
permissions => {
check => ['perm', '/', [ 'Sys.Modify' ]],
},
parameters => {
additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
id => {
type => 'string',
optional => 1,
pattern => '[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?',
description => "The ID for the manager, when omitted the same as the nodename",
},
},
},
returns => { type => 'string' },
code => sub {
my ($param) = @_;
PVE::CephTools::check_ceph_mgr_installed();
PVE::CephTools::check_ceph_inited();
my $rpcenv = PVE::RPCEnvironment::get();
my $authuser = $rpcenv->get_user();
my $mgrid = $param->{id} // $param->{node};
my $worker = sub {
my $upid = shift;
my $rados = PVE::RADOS->new(timeout => PVE::CephTools::get_config('long_rados_timeout'));
$create_mgr->($rados, $mgrid);
};
return $rpcenv->fork_worker('cephcreatemgr', "mgr.$mgrid", $authuser, $worker);
}});
__PACKAGE__->register_method ({
name => 'destroymgr',
path => 'mgr/{id}',
method => 'DELETE',
description => "Destroy Ceph Manager.",
proxyto => 'node',
protected => 1,
permissions => {
check => ['perm', '/', [ 'Sys.Modify' ]],
},
parameters => {
additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
id => {
description => 'The ID of the manager',
type => 'string',
pattern => '[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?',
},
},
},
returns => { type => 'string' },
code => sub {
my ($param) = @_;
my $rpcenv = PVE::RPCEnvironment::get();
my $authuser = $rpcenv->get_user();
PVE::CephTools::check_ceph_mgr_installed();
PVE::CephTools::check_ceph_inited();
my $mgrid = $param->{id};
my $worker = sub {
my $upid = shift;
$destroy_mgr->($mgrid);
};
return $rpcenv->fork_worker('cephdestroymgr', "mgr.$mgrid", $authuser, $worker);
}});
__PACKAGE__->register_method ({
name => 'stop',
path => 'stop',
@ -1038,7 +1205,7 @@ __PACKAGE__->register_method ({
description => 'Ceph service name.',
type => 'string',
optional => 1,
pattern => '(mon|mds|osd)\.[A-Za-z0-9]{1,32}',
pattern => '(mon|mds|osd|mgr)\.[A-Za-z0-9\-]{1,32}',
},
},
},
@ -1088,7 +1255,7 @@ __PACKAGE__->register_method ({
description => 'Ceph service name.',
type => 'string',
optional => 1,
pattern => '(mon|mds|osd)\.[A-Za-z0-9]{1,32}',
pattern => '(mon|mds|osd|mgr)\.[A-Za-z0-9\-]{1,32}',
},
},
},

View File

@ -662,7 +662,7 @@ __PACKAGE__->register_method ({
# NOTE: vncterm VNC traffic is already TLS encrypted,
# so we select the fastest chipher here (or 'none'?)
my $remcmd = $remip ?
['/usr/bin/ssh', '-t', $remip] : [];
['/usr/bin/ssh', '-e', 'none', '-t', $remip] : [];
my $shcmd;
@ -1248,8 +1248,9 @@ my $get_filtered_vmlist = sub {
return if !$templates && $class->is_template($conf);
return if !$ha_managed && PVE::HA::Config::vm_is_ha_managed($vmid);
$res->{$vmid} = $conf;
$res->{$vmid}->{conf} = $conf;
$res->{$vmid}->{type} = $d->{type};
$res->{$vmid}->{class} = $class;
};
warn $@ if $@;
}
@ -1265,7 +1266,7 @@ my $get_start_stop_list = sub {
my $resList = {};
foreach my $vmid (keys %$vmlist) {
my $conf = $vmlist->{$vmid};
my $conf = $vmlist->{$vmid}->{conf};
next if $autostart && !$conf->{onboot};
@ -1277,12 +1278,32 @@ my $get_start_stop_list = sub {
$startup->{order} = LONG_MAX if !defined($startup->{order});
$resList->{$startup->{order}}->{$vmid} = $startup;
$resList->{$startup->{order}}->{$vmid}->{type} = $conf->{type};
$resList->{$startup->{order}}->{$vmid}->{type} = $vmlist->{$vmid}->{type};
}
return $resList;
};
my $remove_locks_on_startup = sub {
my ($nodename) = @_;
my $vmlist = &$get_filtered_vmlist($nodename, undef, undef, 1);
foreach my $vmid (keys %$vmlist) {
my $conf = $vmlist->{$vmid}->{conf};
my $class = $vmlist->{$vmid}->{class};
eval {
if ($class->has_lock($conf, 'backup')) {
$class->remove_lock($vmid, 'backup');
my $msg = "removed left over backup lock from '$vmid'!";
warn "$msg\n"; # prints to task log
syslog('warning', $msg);
}
}; warn $@ if $@;
}
};
__PACKAGE__->register_method ({
name => 'startall',
path => 'startall',
@ -1334,6 +1355,11 @@ __PACKAGE__->register_method ({
} while (!PVE::Cluster::check_cfs_quorum(1));
print "got quorum\n";
}
eval { # remove backup locks, but avoid running into a scheduled backup job
PVE::Tools::lock_file('/var/run/vzdump.lock', 10, $remove_locks_on_startup, $nodename);
}; warn $@ if $@;
my $autostart = $force ? undef : 1;
my $startList = &$get_start_stop_list($nodename, $autostart, $param->{vms});

View File

@ -165,6 +165,8 @@ our $cmddef = {
destroyosd => [ 'PVE::API2::CephOSD', 'destroyosd', ['osdid'], { node => $nodename }, $upid_exit],
createmon => [ 'PVE::API2::Ceph', 'createmon', [], { node => $nodename }, $upid_exit],
destroymon => [ 'PVE::API2::Ceph', 'destroymon', ['monid'], { node => $nodename }, $upid_exit],
createmgr => [ 'PVE::API2::Ceph', 'createmgr', [], { node => $nodename }, $upid_exit],
destroymgr => [ 'PVE::API2::Ceph', 'destroymgr', ['id'], { node => $nodename }, $upid_exit],
start => [ 'PVE::API2::Ceph', 'start', ['service'], { node => $nodename }, $upid_exit],
stop => [ 'PVE::API2::Ceph', 'stop', ['service'], { node => $nodename }, $upid_exit],
install => [ __PACKAGE__, 'install', [] ],

View File

@ -21,6 +21,7 @@ my $ceph_bootstrap_osd_keyring = "/var/lib/ceph/bootstrap-osd/$ccname.keyring";
my $ceph_bootstrap_mds_keyring = "/var/lib/ceph/bootstrap-mds/$ccname.keyring";
my $ceph_bin = "/usr/bin/ceph";
my $ceph_mgr_bin = "/usr/bin/ceph-mgr";
my $config_hash = {
ccname => $ccname,
@ -70,6 +71,17 @@ sub check_ceph_installed {
return 1;
}
sub check_ceph_mgr_installed {
my ($noerr) = @_;
if (! -x $ceph_mgr_bin) {
die "ceph-mgr binaries not installed\n" if !$noerr;
return undef;
}
return 1;
}
sub check_ceph_inited {
my ($noerr) = @_;
@ -178,7 +190,7 @@ sub ceph_service_cmd {
if (systemd_managed()) {
if ($service && $service =~ m/^(mon|osd|mds|radosgw)(\.([A-Za-z0-9]{1,32}))?$/) {
if ($service && $service =~ m/^(mon|osd|mds|mgr|radosgw)(\.([A-Za-z0-9\-]{1,32}))?$/) {
$service = defined($3) ? "ceph-$1\@$3" : "ceph-$1.target";
} else {
$service = "ceph.target";

View File

@ -14,7 +14,7 @@ PERLSOURCE = \
all: pvecfg.pm ${SUBDIRS}
REPOID=`../repoid.pl ../.git`
REPOID=$(shell git rev-parse --short=8 HEAD)
pvecfg.pm: pvecfg.pm.in
sed -e s/@VERSION@/${VERSION}/ -e s/@PACKAGERELEASE@/${PACKAGERELEASE}/ -e s/@PACKAGE@/${PACKAGE}/ -e s/@REPOID@/${REPOID}/ $< >$@.tmp

View File

@ -99,19 +99,33 @@ Description: Debian 7.0 (standard)
A small Debian Wheezy system including all standard packages.
Package: debian-8.0-standard
Version: 8.6-1
Version: 8.7-1
Type: lxc
OS: debian-8.0
Section: system
Maintainer: Proxmox Support Team <support@proxmox.com>
Architecture: amd64
Location: system/debian-8.0-standard_8.6-1_amd64.tar.gz
md5sum: 82f97a385da6e41dedb9ac717bf26c0e
sha512sum: 12f29ee7e5b89b9d094f83e1c89823ee04a6252fd6d6ec68b5c8459fd97add64db11aae5c8b114cabd4b4b1cc5dc84a7531e21a2dd63b1e13609766c04b3014f
Location: system/debian-8.0-standard_8.7-1_amd64.tar.gz
md5sum: 3f607c37a83143e307fbb5a6805737e1
sha512sum: 0c9a25df06b21bace7818c7b057545371e595e70099c0b9e68d248d82179e0ba5dbbffd468f878323102daaf6d239d8c9fb7b067401df0697179d3d5e234842a
Infopage: http://pve.proxmox.com/wiki/Debian_8.0_Standard
Description: Debian 8.0 (standard)
A small Debian Jessie system including all standard packages.
Package: debian-9.0-standard
Version: 9.0-2
Type: lxc
OS: debian-9.0
Section: system
Maintainer: Proxmox Support Team <support@proxmox.com>
Architecture: amd64
Location: system/debian-9.0-standard_9.0-2_amd64.tar.gz
md5sum: c206a6b5984238a242091c85632c69f0
sha512sum: 342e12495214ef315d2c4ac3c6f27396d3b23354330ccca4b0ce3b19e6e75df9729c9dfb878393f0ba113b4cbf37348ec99a435e873447a0fb0bbbc74aab5596
Infopage: http://pve.proxmox.com/wiki/Debian_9.0_Standard
Description: Debian 9.0 (standard)
A small Debian Stretch system including all standard packages.
Package: fedora-24-default
Version: 20161207
Type: lxc
@ -125,6 +139,19 @@ sha512sum: 2a59fa86eeddb7df36e94eae5bbc21ce22f6ab37cc248a963de8de6e4443184522af9
Infopage: https://linuxcontainers.org
Description: LXC default image for fedora 24 (20161207)
Package: fedora-25-default
Version: 20170316
Type: lxc
OS: fedora
Section: system
Maintainer: Proxmox Support Team <support@proxmox.com>
Architecture: amd64
Location: system/fedora-25-default_20170316_amd64.tar.xz
md5sum: 1231e5d4269929e497b98bc8dd08f488
sha512sum: 8213dff0815da9ba6ccdeec08843fa6480e659268e1c6ed7ccd794d20eaafa117f3356c4328d8cab18bb72d9032991e3bdf4d0f8b1de24674f87ab7afd5902d0
Infopage: https://linuxcontainers.org
Description: LXC default image for fedora 25 (20170316)
Package: gentoo-current-default
Version: 20161206
Type: lxc
@ -138,6 +165,19 @@ sha512sum: eac7ba04c071f97050d79344e4703ea6adf12b5e7db5e2af1df19e7a9b89c83cf88cb
Infopage: https://linuxcontainers.org
Description: LXC default image for gentoo current (20161206)
Package: opensuse-42.2-default
Version: 20170406
Type: lxc
OS: opensuse
Section: system
Maintainer: Proxmox Support Team <support@proxmox.com>
Architecture: amd64
Location: system/opensuse-42.2-default_20170406_amd64.tar.xz
md5sum: bd4188e3b4ca43890b93e35f0a63d420
sha512sum: 59cf116d5bd825c23df6e22211febc0a20dd8b52515e481a5f4c2ccc8a0f60a868faea3047d4e1c8c8fc6a52ef1ddca0ef7e22be8ead8562813b2a6e3deee6f1
Infopage: https://linuxcontainers.org
Description: LXC default image for opensuse 42.2 (20170406)
Package: ubuntu-12.04-standard
Version: 12.04-1
Type: lxc
@ -194,3 +234,17 @@ Infopage: http://pve.proxmox.com/wiki/Ubuntu_Yakkety_Standard
Description: Ubuntu Yakkety (standard)
A small Ubuntu Yakkety system including all standard packages.
Package: ubuntu-17.04-standard
Version: 17.04-1
Type: lxc
OS: ubuntu-17.04
Section: system
Maintainer: Proxmox Support Team <support@proxmox.com>
Architecture: amd64
Location: system/ubuntu-17.04-standard_17.04-1_amd64.tar.gz
md5sum: 87b34496ef90c2d87c0c97e190871b3c
sha512sum: 30b4018447e1d07d950ccab17c9b54c2f4b01faa748d1725c17b34198dd6bb2b982acf9e09fb94ca8e891824e8e2c2ec7040e21a41f72fcee4fa7811f81e0341
Infopage: http://pve.proxmox.com/wiki/Ubuntu_Zesty_Standard
Description: Ubuntu Zesty (standard)
A small Ubuntu Zesty system including all standard packages.

View File

@ -10,6 +10,7 @@ use File::Basename;
use Getopt::Long;
use HTTP::Status qw(:constants :is status_message);
use Text::ParseWords;
use String::ShellQuote;
use PVE::JSONSchema;
use PVE::SafeSyslog;
use PVE::Cluster;
@ -257,8 +258,9 @@ sub check_proxyto {
sub proxy_handler {
my ($node, $remip, $dir, $cmd, $args) = @_;
my $cmdargs = [String::ShellQuote::shell_quote(@$args)];
my $remcmd = ['ssh', '-o', 'BatchMode=yes', "root\@$remip",
'pvesh', '--noproxy', $cmd, $dir, @$args];
'pvesh', '--noproxy', $cmd, $dir, @$cmdargs];
system(@$remcmd) == 0 || die "proxy handler failed\n";
}

View File

@ -1,3 +1,83 @@
pve-manager (4.4-24) unstable; urgency=medium
* update Promxox VE 4.4 EOL warning
-- Proxmox Support Team <support@proxmox.com> Wed, 30 May 2018 12:02:05 +0200
pve-manager (4.4-23) unstable; urgency=medium
* add PVE 4.4 EOL warning
-- Proxmox Support Team <support@proxmox.com> Wed, 30 May 2018 10:58:52 +0200
pve-manager (4.4-22) unstable; urgency=medium
* add spec-ctrl cpu flag checkbox
-- Proxmox Support Team <support@proxmox.com> Wed, 17 Jan 2018 09:18:05 +0100
pve-manager (4.4-21) unstable; urgency=medium
* add PCID checkbox to ProcessorEdit
-- Proxmox Support Team <support@proxmox.com> Wed, 10 Jan 2018 13:49:17 +0100
pve-manager (4.4-20) unstable; urgency=medium
* fix #1539: fix issues with proxied commands using pvesh
* fix #1531: match nodename exactly for vmidselector
* fix #1024: issues with start-on-boot
-- Proxmox Support Team <support@proxmox.com> Wed, 15 Nov 2017 10:41:07 +0100
pve-manager (4.4-18) unstable; urgency=medium
* ceph: fix creation of first monitor in a cluster
* ceph: allow '-' in service instance names
-- Proxmox Support Team <support@proxmox.com> Mon, 21 Aug 2017 10:31:35 +0200
pve-manager (4.4-17) unstable; urgency=medium
* ceph: add check for ceph-mgr when destroying monitor
-- Proxmox Support Team <support@proxmox.com> Mon, 14 Aug 2017 14:56:31 +0200
pve-manager (4.4-16) unstable; urgency=medium
* remove old CA entry for enterprise repository, not required anymore
* ceph: backport createmgr/destroymgr for upgrade to PVE 5.x / Luminous
-- Proxmox Support Team <support@proxmox.com> Mon, 14 Aug 2017 13:49:31 +0200
pve-manager (4.4-15) unstable; urgency=medium
* add certificate authority for enterprise repository
-- Proxmox Support Team <support@proxmox.com> Wed, 05 Jul 2017 08:47:58 +0200
pve-manager (4.4-14) unstable; urgency=medium
* update default aplinfo.dat
* fix #1414: use table layout instead of columns
* Do not internationalize 'Pools' when used in Ceph Context
* remove "read-only" option from container root disk
* fix #1317: check wizard form also on validitychange
* fix #1307: dont use language dependent separator in gui
* fix #1305: typo
-- Proxmox Support Team <support@proxmox.com> Mon, 19 Jun 2017 07:16:54 +0200
pve-manager (4.4-13) unstable; urgency=medium
* fix #1299: sort pools in pool selector by default

8
debian/postinst vendored
View File

@ -116,7 +116,7 @@ EOF
deb-systemd-invoke reload-or-restart $service
done
fi
# rewrite banner
test -e /proxmox_install_mode || pvebanner || true
@ -137,7 +137,11 @@ EOF
else
# Version $2 is the most recently configured version of this
# package.
:
if dpkg --compare-versions "$2" '<=' '4.4-15'; then
# 4.4-15 temporarily reverted the removal of the startcom CA in
# ca-certificates; we've since switched to let's encrypt
update-ca-certificates >/dev/null 2>&1
fi
fi ;;
abort-upgrade)

View File

@ -1,6 +1,6 @@
VERSION=4.4
PACKAGE=pve-manager
PACKAGERELEASE=13
PACKAGERELEASE=24
BINDIR=${DESTDIR}/usr/bin
PERLLIBDIR=${DESTDIR}/usr/share/perl5

View File

@ -517,3 +517,10 @@ table.osds td:first-of-type {
.x-webkit :not(.x-form-textarea-body) > .x-form-trigger-wrap {
height: initial;
}
.eolicon {
position: relative;
top: 4px;
float: left;
margin-right: 5px;
}

View File

@ -129,6 +129,13 @@ Ext.apply(Ext.form.field.VTypes, {
HostListText: gettext('Not a valid list of hosts')
});
// since we always want the number in
// x.y format and never in e.g. x,y
Ext.define('PVE.form.field.Number', {
override: 'Ext.form.field.Number',
submitLocaleSeparator: false
});
// ExtJs 5-6 has an issue with caching
// see https://www.sencha.com/forum/showthread.php?308989
Ext.define('PVE.UnderlayPool', {

View File

@ -185,9 +185,8 @@ Ext.define('PVE.StdWorkspace', {
var ui = me.query('#versioninfo')[0];
if (PVE.VersionInfo) {
var version = PVE.VersionInfo.version + '-' + PVE.VersionInfo.release + '/' +
PVE.VersionInfo.repoid;
ui.update('Virtual Environment ' + version);
var version = PVE.VersionInfo.version + '-' + PVE.VersionInfo.release;
ui.update('Virtual Environment ' + version );
} else {
ui.update('Virtual Environment');
}
@ -303,7 +302,6 @@ Ext.define('PVE.StdWorkspace', {
'<img style="padding-top:4px;padding-right:5px" src="/pve2/images/proxmox_logo.png"/></a>'
},
{
minWidth: 200,
id: 'versioninfo',
html: 'Virtual Environment'
},
@ -314,6 +312,20 @@ Ext.define('PVE.StdWorkspace', {
{
flex: 1
},
{
id: 'eolannouncement',
padding: '0 0 0 15',
html: '<a href="https://pve.proxmox.com/wiki/FAQ#faq-support-table" target="_blank">'+
'<i class="fa fa-2x eolicon critical fa-exclamation-triangle"></i> ' +
'Support for Proxmox VE 4.4<br />ends on June 30, 2018</a>',
autoEl: {
tag: 'div',
'data-qtip': gettext("You won't get any security fixes after the EOL date, Please consider upgrading.")
}
},
{
flex: 1
},
{
pack: 'end',
id: 'userinfo',

View File

@ -5,15 +5,23 @@ Ext.define('PVE.dc.Guests', {
title: gettext('Guests'),
height: 200,
layout: 'column',
layout: {
type: 'table',
columns: 2,
tableAttrs: {
style: {
width: '100%'
}
}
},
bodyPadding: '0 20 20 20',
defaults: {
columnWidth: 0.5,
xtype: 'box',
padding: '0 50 0 50',
style: {
'text-align':'center'
'text-align':'center',
'line-height':'1.2'
}
},
items: [{
@ -88,6 +96,7 @@ Ext.define('PVE.dc.Guests', {
]
},{
itemId: 'error',
colspan: 2,
data: {
num: 0
},

View File

@ -6,10 +6,13 @@ Ext.define('PVE.dc.Health', {
bodyPadding: '0 20 0 20',
height: 200,
layout: 'column',
layout: {
type: 'hbox',
align: 'stretch'
},
defaults: {
columnWidth: 0.5,
flex: 1,
xtype: 'box',
style: {
'text-align':'center'

View File

@ -27,10 +27,10 @@ Ext.define('PVE.dc.Summary', {
xtype: 'panel',
height: 250,
bodyPadding: '0 0 10 0',
layout: 'column',
layout: 'hbox',
defaults: {
xtype: 'pveGauge',
columnWidth: 1/3
flex: 1
},
items:[
{

View File

@ -21,7 +21,7 @@ Ext.define('PVE.form.GuestIDSelector', {
value < me.minValue ||
value > me.maxValue) {
// check is done by ExtJS
return;
return true;
}
if (me.validateExists === true && !me.exists) {
@ -65,11 +65,11 @@ Ext.define('PVE.form.GuestIDSelector', {
method: 'GET',
success: function(response, opts) {
me.exists = false;
me.isValid();
me.validate();
},
failure: function(response, opts) {
me.exists = true;
me.isValid();
me.validate();
}
});
}

View File

@ -165,6 +165,7 @@ Ext.define('PVE.form.VMSelector', {
if (me.nodename) {
me.store.filters.add({
property: 'node',
exactMatch: true,
value: me.nodename
});
}

View File

@ -491,18 +491,19 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
});
me.column2 = [
{
xtype: 'pvecheckbox',
name: 'ro',
defaultValue: 0,
fieldLabel: gettext('Read-only'),
hidden: me.insideWizard
},
me.acl,
me.quota
];
if (!isroot) {
me.column2.unshift({
xtype: 'pvecheckbox',
name: 'ro',
defaultValue: 0,
fieldLabel: gettext('Read-only'),
hidden: me.insideWizard
});
me.backup = Ext.createWidget('pvecheckbox',{
xtype: 'pvecheckbox',
name: 'backup',

View File

@ -260,7 +260,7 @@ Ext.define('PVE.node.Config', {
},
{
xtype: 'pveNodeCephPoolList',
title: gettext('Pools'),
title: 'Pools',
iconCls: 'fa fa-sitemap',
groups: ['ceph'],
itemId: 'ceph-pools'

View File

@ -5,18 +5,19 @@ Ext.define('PVE.node.StatusView', {
height: 300,
bodyPadding: '20 15 20 15',
layout: {
type: 'table',
columns: 2,
tableAttrs: {
style: {
width: '100%'
}
}
},
defaults: {
xtype: 'pveInfoWidget',
padding: '0 15 5 15',
// default available width on 1920x1080 is
// 1545, so we have for one column
// ~770px
// -10 for padding
// -2 for border
// -30 for inner padding
// = 728px
// = 364px per column inside statuspanel
width: 364
padding: '0 15 5 15'
},
items: [
@ -30,7 +31,8 @@ Ext.define('PVE.node.StatusView', {
{
itemId: 'wait',
title: gettext('IO delay'),
valueField: 'wait'
valueField: 'wait',
rowspan: 2
},
{
itemId: 'load',
@ -40,7 +42,7 @@ Ext.define('PVE.node.StatusView', {
},
{
xtype: 'box',
width: 400,
colspan: 2,
padding: '0 0 20 0'
},
{
@ -77,11 +79,12 @@ Ext.define('PVE.node.StatusView', {
},
{
xtype: 'box',
width: 400,
colspan: 2,
padding: '0 0 20 0'
},
{
itemId: 'cpus',
colspan: 2,
printBar: false,
title: gettext('CPU(s)'),
textField: 'cpuinfo',
@ -93,24 +96,23 @@ Ext.define('PVE.node.StatusView', {
gettext('Socket')
) + ")";
},
value: '',
width: 730
value: ''
},
{
itemId: 'kversion',
colspan: 2,
title: gettext('Kernel Version'),
printBar: false,
textField: 'kversion',
value: '',
width: 730
value: ''
},
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: '',
width: 730
value: ''
}
],

View File

@ -104,6 +104,7 @@ Ext.define('PVE.qemu.CreateWizard', {
hdpanel,
{
xtype: 'pveQemuProcessorPanel',
insideWizard: true,
title: gettext('CPU')
},
{

View File

@ -3,12 +3,31 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
alias: 'widget.pveQemuProcessorPanel',
onlineHelp: 'qm_cpu',
insideWizard: false,
// defines the possible cpu flags and their labels
flagsAvail: ['pcid', 'spec-ctrl'],
flagLabels: ['PCID', 'SPEC-CTRL'],
onGetValues: function(values) {
var me = this;
// build the cpu options:
me.cpu.cputype = values.cputype;
var flags = [];
me.flagsAvail.forEach(function(flag) {
if (values[flag]) {
flags.push('+' + flag.toString());
}
delete values[flag];
});
me.cpu.flags = flags.length ? flags.join(';') : undefined;
delete values.cputype;
delete values.flags;
var cpustring = PVE.Parser.printQemuCpu(me.cpu);
// remove cputype delete request:
@ -96,9 +115,19 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
name: 'totalcores',
value: '1'
}
];
me.flagsAvail.forEach(function(flag, i) {
me.column2.push({
hidden: me.insideWizard,
disabled: me.insideWizard,
xtype: 'pvecheckbox',
fieldLabel: me.flagLabels[i] || flag,
name: flag,
uncheckedValue: 0
});
});
me.callParent();
}
});
@ -126,6 +155,14 @@ Ext.define('PVE.qemu.ProcessorEdit', {
var cpu = PVE.Parser.parseQemuCpu(value);
ipanel.cpu = cpu;
data.cputype = cpu.cputype;
if (cpu.flags) {
var flags = cpu.flags.split(';');
flags.forEach(function(flag) {
var sign = flag.substr(0,1);
flag = flag.substr(1);
data[flag] = (sign === '+');
});
}
}
me.setValues(data);
}

View File

@ -229,7 +229,7 @@ Ext.define('PVE.window.Wizard', {
display_header(tabs[0]);
Ext.Array.each(me.query('field'), function(field) {
field.on('change', function(f) {
var validcheck = function() {
var tp = me.down('#wizcontent');
var atab = tp.getActiveTab();
var valid = check_card(atab);
@ -242,7 +242,9 @@ Ext.define('PVE.window.Wizard', {
} else if (ntab && !atab.onSubmit) {
ntab.enable();
}
});
};
field.on('change', validcheck);
field.on('validitychange', validcheck);
});
}
});