Also moves to full declarative style for
IPProtocolSelector, saves 11 lines of of boilerplate code
(works when the store is local and not pulled over the API)
The ComboGrid combonent requires row-like selection something that
the default ExtJS Ext.selection.DataViewModel used for ComboBox cannot do.
This requires overriding the protected method onBindStore() where the selection
model is set.
They are mostly intended to save space as the "new theme", if it
gets applied, takes up space like it's worth pure gold.
Paddings get made smaller on buttons, tabs and grids.
Also let the main tree receive a sane space padding.
Further fix the height of the top info panel (the one with the logo,
PVE version, login button ...).
Also the "start/stop/more/..." buttons from the tool bar above the
navigation tab bar gets fixed.
Login panel got also some small fixes together with all input
fields.
We use simple CSS overrides to achieve this all.
Working with the scss (sass) files and rebuilding the theme would
be nicer, but as I have no intend to start working with senchas
"build system" and we self have no sane way for compiling the sass
stuff also, this is the preferred way for now.
We add a new css stylesheet so that the current manager remains
untouched by this changes.
Do not only allow root@pam to admin ceph server as some user do not
want to allow root logins and users with the Sys.Modify permission
should be able to modify ceph related stuff.
We use basically the following permissions:
Sys.Modify:
for any delete, add, modify action (POST, PUT, DELETE)
Sys.Audit and Datastore.Audit:
for any status/information view action (GET)
Sys.Log:
for viewing the Ceph log (was already implemented)
We have two exceptions creating and destroying osds. Those may only
be done by 'root@pam' for security reasons.
Also show users with any of those capabilities the ceph tab in the
web GUI.
Addresses bug#818
If set limit the maximal worker count to the new datacenter.cfg
setting 'max_workers'.
For stopall we prefer this over the cpu count if it's set.
For migrateall we prefer the parameter but allow now to ommit
the parameter and then we use the new setting if set.
if both are not set we throw an error.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
listen to 'activate' event is needed because of framework changes,
similar to c0b3df6e34
ext6migrate: listen to 'activate' events for panels inside a tabpanel
up to now we were only updating the picker selection when the picker
was created, which means that subsequent changes in the text field were
not propagated to the drop-down list
This patch creates a private syncSelection() method which is called each time
the picker is shown
This is roughly based on the ExtJS 4 ComboBox behaviour
The IPrefSelector ComboGrid can have selected values which are not backed
by the component store, ie the store only contains IP aliases, but
the ComboGrid can contain an IP adress not registered as an IP alias.
In that case we should not try to update the selection in the dropdown,
as the dropdown only knows about the component store.
Implementation is similar to the syncSelection() private method of the
ExtJS4 ComboBox.
using applyIf is not safe here as the tbar property has already been set
by the framework ( and anyway we would like to override any default
set by the framework )
this allows the toolbar of the component to be displayed
since we do not want to upload vzdump backup files (see bug #498),
it is confusing to expose this option in the gui, since currently
it can never succeed.
the correct way would probably allow it based on the users permissions
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
The last processor editing commit broke various parts of the
cpu editor window.
Most noticeably switching between the default and non-default
cpu types dealt with empty values wrongly and tried to
delete the 'cputype' property rather than the cputype
portion of the cpu property string.
The backup and iothread options are now boolean types
internally instead of strings and need to be treated as
such.
Added a parseBoolean() function to deal with this with an
optional default value to use for undefined values.
The default for an undefined backup value is true.
API changes in ExtJS6 involved here:
* 'checkchange' event passes now the record index instead of the whole record
* record.fields is now an array of Field objects, before it was an Object
The use of this field raise an error with ExtJS6 because it is not
unique inside the application.
Removing this is safe, because we never query the Comment column
with an id.
This fixes a nasty bug where an initial click on the ViewSelector
trigger would display the picker but hide it immediatly afterwards.
What was happening behind the scene, is that without queryMode 'local',
the store bound to the picker was loaded on each picker display.
Loading the store would then trigger our onLoad() override in ToolKit.js
which called setValue(), which fired a bunch of unwanted events
including 'collapse'.
It is safe here not to call onLoad() to set an initial value, because
the initial value is set in initComponent() (value: groupdef[0][0])
This makes the code more homogeneous and allows us to use the ExtJS
class autoloader in the future if we want (autoloader idea: ExtJS tries to load the
JS class file over HTTP based on the class name, no need to maintain a list
of includes)
Some fields need to be processed by initConfig(),
which will be run before initComponent() in the
component lifecycle.
This fix the problem of the Selector default value
whihc was not loading.
If set, Diffie-Hellman parameters in PEM format are loaded
from the given path. Otherwise, the built-in 'skip2048'
group is used.
Also fix some typos in the man page.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
AnyEvent uses a built-in DH group defined as 'schmorp1539'
by default, which seems to trigger the bug in [1] for every
attempt of accessing the web GUI using IE11 and TLS1.2. By
switching to a bigger default DH group ('skip2048'), the
bug seems to be gone (or trigger sufficiently rarely).
1: http://engineering.imvu.com/2015/01/27/the-case-of-the-page-cant-be-displayed-intermittent-selenium-test/
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
If we pass true to the removeAll() , ExtJS6 will try to erase the leafes of a tree,
and then try to to iterate throuch these leaves in onNodeRemove() ( this obviously do not work)
The true parameter does not seem to be needed anyway anymore.
After a call to removeAll, the childNodes[] property of the rootNode is empty