Thomas Lamprecht
71139be203
bump version to 2.1.9-1
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:48:51 +02:00
Thomas Lamprecht
fbca018229
ui: content: code cleanups
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
7e8b24bd8c
ui: content: show namespaces also inline and rework node type detection
...
this not only makes the action disable/hide checks simpler, but also
prepares the view a bit for the idea of adding a new API endpoint
that returns the whole datastore content tree as structured JSON so
that it can be directly loaded into a tree store.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
fe79687c59
pull group: add error context for cleanup_unreferenced_files
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
9ccf933be5
datastore: move update_manifest into BackupDir impl
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
87cdc327b9
sync: pull snapshot: use template variables for bloat reduction
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
5566099849
datastore: move cleanup_unreferenced_files to BackupDir impl and fix NS awareness
...
sync failed on cleanup due to always trying to do so in the root NS
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
92b9cc1554
ui: remote target selectors: code cleanups
...
just a small start...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
0e3de42aa7
ui: sync job: use namespace selector for localNS
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Thomas Lamprecht
8c29bca57c
ui: move remote target datastore/ns selectors to own file
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Fabian Grünbichler
d895b26bb9
ui: add namespace fields to sync
...
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:40:43 +02:00
Fabian Grünbichler
c06c1b4bd7
sync/pull: make namespace aware
...
Allow pulling all groups from a certain source namespace, and
possibly sub namespaces until max-depth, into a target namespace.
If any sub-namespaces get pulled, they will be mapped relatively from
the source parent namespace to the target parent namespace.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
31aa38b684
ui: verify job: fix add-job on datastore-agnostic level
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
9d8090626c
ui: namespace selector: allow to set datastore dynamically
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
6b4d057370
api-types: rework BackupNamespace::map_prefix
...
to use slice::strip_prefix() from std
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
53d073ec1a
datastore: minor cleanup
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
30ccc3003e
datastore: relative path fixup
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
bc4af01559
ui: datastore content: make verify-all more flexible
...
allow to specify the namespace, max_depth and also the re-verify/skip
behavior.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
d83ce0d0c7
ui: fix group backup comment NS awareness
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
ad7741a294
ui: verify job: make namespace and max-depth aware
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
a327f918af
ui: add verifyOutdatedAfter component
...
mainly as separate component for the trigger
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
0b1edf297b
verify job: support max-depth config
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
59229bd7f1
api: verify: support namespaces
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
8e82cc807c
add ns-recursive and acl/authid aware backup group iter
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
d4037525a8
remote scan/completion: add namespace support
...
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
40d495de6d
api: add DatastoreWithNamespace helper struct
...
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
d3a570eb79
ui: fix wrong call to htmlEncode
...
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
9f8fb928f1
ui: add namespace renderer
...
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
226a4e68da
client: add basic namespace commands
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
473063e9ec
api: ns management: fix permission checks
...
we do not have normal GET variables available in the checks provided
by the rest server from the api macro, so do it manually.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
93b0659ff2
ui: datastore: more NS awareness
...
verify is actually not yet ready in the backend
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
e8112eb37b
ui: datastore content: show root node for better UX with NS
...
that way it's easier to see on which NS one currently operates and
allows better distinguishing of root NS and some sub ns named "Root"
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
6f5753cfa3
api-types: allow empty namespace
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
3c09413a0a
client: don't pass empty backup-ns
...
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
028346e42c
ui: content view: improve empty text
...
reference NS so that users get a hint where they are currently
hierarchy-wise, and clarify that we found no *accessible* snapshots,
on this level, i.e., there can be some that we just cannot see due to
only having access on lover level NS or being different owners.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
bc06c7b4e9
api: namespace: return popped component
...
helpful for places where namespaces need to be (re)created
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
7a404dc53d
api: datastore: further unify check helpers
...
this is the most common sequence of checks we have in this file, so
let's have a single place where we implement it.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
c939698414
api: datastore: load datastore & check owner helper
...
these happen together very often.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
1909ece229
api: datastore: lookup after checking privs
...
else this could leak existence of datastore.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
2bc2435a96
api: datastore: refactor priv checks
...
the helper now takes both high-privilege and lesser-privilege privs, so
the resulting bool can be used to quickly check whether additional
checks like group ownership are needed or not.
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Fabian Grünbichler
a724f5fd47
api: datastore: unify access checks
...
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Wolfgang Bumiller
133d718fe4
split the namespace out of BackupGroup/Dir api types
...
We decided to go this route because it'll most likely be
safer in the API as we need to explicitly add namespaces
support to the various API endpoints this way.
For example, 'pull' should have 2 namespaces: local and
remote, and the GroupFilter (which would otherwise contain
exactly *one* namespace parameter) needs to be applied for
both sides (to decide what to pull from the remote, and what
to *remove* locally as cleanup).
The *datastore* types still contain the namespace and have a
`.backup_ns()` getter.
Note that the datastore's `Display` implementations are no
longer safe to use as a deserializable string.
Additionally, some datastore based methods now have been
exposed via the BackupGroup/BackupDir types to avoid a
"round trip" in code.
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com >
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
1baf9030ad
ui: datastore prune: support passing namespace
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
2f5417f845
prune: allow passing namespace
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
a7f5e64154
ui: datastore content: allow to create new namespace
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
55ffd4a946
ui: utils: also provided me.SAFE_ID_RE
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
94135ccca2
ui: datastore content: allow to select namespace to show
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
968270ae3d
ui: add namespace selector combobox
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
d45506d4a4
api: backup create: enforce that namespace exists
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00
Thomas Lamprecht
cabda57f0a
api: backup create: make permission check namespace aware
...
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com >
2022-05-12 09:33:50 +02:00