Commit Graph
1633 Commits
Author SHA1 Message Date
Daniel Clavijo Coca 378ffcd47a B OpenNebula/one#6246: Autocorrect only deprecated methods (#2654) 2023-06-27 18:16:02 +02:00
Pavel Czerný 868828464c M #-: Fix return code if sched-action add fails (#2641) 2023-06-21 09:33:35 +02:00
Victor Palma 15c4626313 F #5591: Add CLI support for custom role attrs (#2579)
(cherry picked from commit 6b11d98f3f)
2023-05-12 13:52:01 +02:00
Ruben S. Montero a9da75db0e F #6030: Cancel backup operation
Author: Pavel Czerny <pczerny@opennebula.systems>
Author: Michal Opala <mopala@opennebula.io>
(cherry picked from commit f12c365d3e)
2023-03-16 13:11:27 +01:00
Daniel Clavijo Coca 820948be4c M #-: Add -R short option for recursive operations (#2555)
(cherry picked from commit 19c6b7c5ef)
2023-03-09 17:48:19 +01:00
Ruben S. Montero 2ec40c2b72 Revert "F #5591: Custom role attributes in oneflow added (#2525)"
This reverts commit d6ec6fad07.

(cherry picked from commit 9bf063b1a2)
2023-02-28 12:28:17 +01:00
Victor Palma f66ab7a8c2 F #5591: Custom role attributes in oneflow added (#2525)
(cherry picked from commit d6ec6fad07)
2023-02-27 10:30:27 +01:00
Ruben S. Montero f0c40913c6 F #6029: Force to re-use current datastore ID
When doing incremental backups it MUST reuse the current datastore ID.
This commits forces this setting ignoring the API parameter in this case.

(cherry picked from commit 01c490a36d)
2023-02-22 11:48:09 +01:00
Jan Orel b82ca031a7 Revert "F #5591: Custom role attributes in oneflow added (#2465)" (#2491)
This reverts commit 8aae36824d.
2023-02-09 10:58:02 +01:00
Tino Vázquez fae34eee26 L #-: Change percentage for brackets
in ruby word array definitions

(cherry picked from commit 27a97b4ea6)
(cherry picked from commit f0d462649d)
2023-02-07 13:28:47 +01:00
Ruben S. MonteroandMichal Opala 8cb3a360b8 F #6029, #6074: Retention and restore opetions for incremental backups
* Introduce support to follow KEEP_LAST for incremental backups.
  - New increment_flatten action added for backup datastores.
  - increment_flatten will consolidate KEEP_LAST increments into the
    current first increment in the chain.
  - increment_flatten MUST return the new chain (inc1:source1,...) and size
    of the new first increment (FULL) in the chain.

* Downloader logic for restore has been extracted from downloader.sh to
  reuse the increment flatten logic. A new command restic_downloader.rb
  process restic:// pseudo-urls.

* Restore process uses two new attributes to customize the restore
  process:
  - NAME to be used as base name for images and VM Template
  - INCREMENT_ID to restore disks from a given increment (not always the
    last one)

* Common logic has been added to BackupImage class (backup.rb)

* Includes the following fixes:
  - Fix when increment includes blocks larger than max qemu-io request size
  - Fix IMAGE counter for quotas on backup images
  - Fix rsync restore NO_IP / NO_NIC attributes

TODO:
* Mimic increment_flatten logic and restore images on the backup server
* Suntone restore options

co-authored-by:Michal Opala <mopala@opennebula.io>
2023-02-07 13:19:03 +01:00
Victor Palma 8aae36824d F #5591: Custom role attributes in oneflow added (#2465)
Custom attributes have been added at the role level.
In this way, roles can be individually customized during instantiation.
Added parameters:
- custom_attrs: contains user-defined custom attributes.
- custom_attrs_values: contains the values of the custom_attrs.
  In case of overlapping role and service level attributes, role level attributes will take precedence.

Example:
roles: [
    {
        "name": "role_1",
        ...
        "custom_attrs": {
            "MEMORY": "M|range|memory (mb)|100..500|200",
            "DISK_SIZE": "M|range|disk size (mb)|100..500|250"
        }
    }
]

In order to be used from CLI, the vm_template_contents in the service template must be filled manually.

(cherry picked from commit 90aac4b5f3)
2023-02-07 07:48:31 +01:00
Tino Vázquez da57aa1349 L #-: Deprecate File.exists? 2023-01-31 13:45:40 +01:00
Pavel Czerný 6421160a68 B #5913: Check if CLI *.yaml exists (#2469)
(cherry picked from commit f0c01ca238)
2023-01-31 13:34:45 +01:00
Pavel Czerný 8f99e99236 B #6068: Fix authorization for onevm disk-resize (#2468)
Also fix error code for onevm create-chart

(cherry picked from commit 18a4796ea1)
2023-01-31 12:27:31 +01:00
Pavel CzernýandRuben S. Montero 0696693531 B #6027: Parse host NUMA monitoring (#2440)
Co-authored-by: Ruben S. Montero <rsmontero@opennebula.org>
2023-01-09 18:29:09 +01:00
Tino Vázquez 3376afdaf0 M #-: Bump year 2023 2023-01-09 12:23:19 +01:00
Tino Vázquez abeccc507f L #-: YodaStyle new cop compliance 2023-01-05 13:56:38 +01:00
Jan OrelandPavel Czerný a7fd43d9f5 B #5676: Create LDAP user without password (#2399)
* Create LDAP user without password
* Update oneuser CLI tool
* Update opennebula_configuration.xsd

Co-authored-by: Pavel Czerný <pczerny@opennebula.io>
2022-12-07 10:03:15 +01:00
Pavel Czerný fd883f595a F #5925: Improve image delete operation (#2384) 2022-11-28 11:15:43 +01:00
Pavel Czerný f77b9365ee M #-: Network update fix CLI output, ignore alias and pci (#2376)
* Network Update CLI output
* Network update ignores alias and pci NIC
2022-11-24 10:19:39 +01:00
Pavel Czerný 2bda3d2c81 M #-: Fix minor issues in backups (#2366)
* Handle backup append flag for updateconf
* Fix backup attributes for updateconf
2022-11-23 10:00:24 +01:00
865908de1c F #5989: Live update of Virtual Network attributes
co-authored-by: Pavel Czerný <pczerny@opennebula.systems>
co-authored-by: Frederick Borges <fborges@opennebula.io>
co-authored-by: Christian González <cgonzalez@opennebula.io>

* VNET updates trigger a driver action on running VMs with NICs in the
  network.

* VNET includes a sets with VM status: updated, outdated, error and
  updating. With VMs in each state.

* VNET flags error situations with a new state UPDATE_FAILURE.

* The same procedure is applied when an AR is updated (only VMs in that
  AR are updated).

* A new options in the one.vn.recover API call enable to recover or
  retry this VM update operations.

* The following attributes can be live-updated per VNET driver:
    - PHYDEV (novlan, vlan, ovs driver)
    - MTU (vlan, ovs driver)
    - VLAN_ID (vlan, ovs driver)
    - QINQ_TYPE (ovs driver)
    - CVLANS (ovs driver)
    - VLAN_TAGGED_ID (ovs driver)
    - OUTER_VLAN_ID (ovs driver)
    - INBOUND_AVG_BW (SG, ovs driver + KVM)
    - INBOUND_PEAK_BW (SG, ovs driver + KVM)
    - INBOUND_PEAK_KB (SG, ovs driver + KVM)
    - OUTBOUND_AVG_BW (SG, ovs driver + KVM)
    - OUTBOUND_PEAK_BW (SG, ovs driver + KVM)
    - OUTBOUND_PEAK_KB (SG, ovs driver + KVM)

* New API call one.vm.updatenic, allows to update individual NICs
  without the need of detach/attach (only QoS supported).

* Update operations for: 802.1Q, bridge, fw, ovswitch, ovswitch_vxlan
  and vxlan network drivers.

* VNET attributes (old values) stored in VNET_UPDATE to allow
  implementation of update operations. The attribute is removed after a
  successful update.

* Updates to CLI onevnet (--retry option) / onevm (nicupdate command)

* XSD files updated to reflect the new data model

* Ruby and JAVA bindings updated: new VNET state and recover option, new
  VM API call.

* Suntone and Fireedge implementation (lease status, recover option, new
  states)

TODO: Virtual Functions does not support this functionality

iii
2022-11-16 15:06:49 +01:00
Michal Opala 0d5f9280a8 F #5973: Add OneGate proxy service (#2281)
* Update install_gems (async.io, etc, rb-inotify)
    - make install_gems script more verbose
    - slightly refactor/simplify update_locks script
    - add async.io, etc and rb-inotify gems
    - update gem locks for: AlmaLinux8/9, CentOS8
    - update gem locks for: Debian10/11, Ubuntu1804/2004/2204

* onegate-proxy:
    - ruby code and default config (169.254.16.9 to avoid conflicts)
    - install.sh script
    - logrotate and systemd onegate-proxy configs
    - onecfg configs
2022-11-14 20:48:30 +01:00
Tino Vázquez 8ee6e973bb L #-: Linting for backup files 2022-11-07 12:41:06 +01:00
Ruben S. Montero 0a46e21129 F #5516: Incremental backups for qcow2 disk images
- Adds new configuration attribute MODE: FULL or INCREMENTAL for
  BACKUP_CONFIG. FULL backups uses a differen backup image.

- INCREMENTAL backup information is together with the backup image.
  Example:

      <BACKUP_INCREMENTS>
        <INCREMENT>
          <DATE><![CDATA[1667770552]]></DATE>
          <ID><![CDATA[0]]></ID>
          <PARENT_ID><![CDATA[-1]]></PARENT_ID>
          <SIZE><![CDATA[172]]></SIZE>
          <SOURCE><![CDATA[bb828060]]></SOURCE>
          <TYPE><![CDATA[FULL]]></TYPE>
        </INCREMENT>
        <INCREMENT>
          <DATE><![CDATA[1667770604]]></DATE>
          <ID><![CDATA[1]]></ID>
          <PARENT_ID><![CDATA[0]]></PARENT_ID>
          <SIZE><![CDATA[1]]></SIZE>
          <SOURCE><![CDATA[ca0de5f6]]></SOURCE>
          <TYPE><![CDATA[INCREMENT]]></TYPE>
        </INCREMENT>
        <INCREMENT>
          <DATE><![CDATA[1667770700]]></DATE>
          <ID><![CDATA[2]]></ID>
          <PARENT_ID><![CDATA[1]]></PARENT_ID>
          <SIZE><![CDATA[39]]></SIZE>
          <SOURCE><![CDATA[e9897d6a]]></SOURCE>
          <TYPE><![CDATA[INCREMENT]]></TYPE>
        </INCREMENT>
      </BACKUP_INCREMENTS>

    This information only appears on incremental backups

- Internal BACKUP_CONFIG data includes information about the current
  active backup and the last increment id.

- Backup operation includes a new parameter: reset. This "closes" the
  current active incremental chain and creates a new FULL backup.

- Backup drivers store backups with increment index (0 = FULL) e.g.
  disk.0.0.

- Incremental backups are only allowed for VMs using all disks in qcow2
  format.

- Backup configuration cannot be changed while doing a VM backup.

- Downloader strings includes backup chains <inc_id>:<backup_ref>,...

- Restic downloader  has been updated to support backup chains. Disk
  images are rebased across increments.
2022-11-06 22:54:36 +01:00
Pavel Czerný c8da8a2ce5 M #-: Fix parsing of scheduled time (#2332) 2022-11-02 10:26:06 +01:00
Tino Vázquez 2c3f629236 L #-: Adjust to new rubocop version 2022-10-21 12:34:22 +02:00
Ruben S. Montero e433ccb85b F #5516: New backup interface for OpenNebula
co-authored-by: Frederick Borges <fborges@opennebula.io>
co-authored-by: Neal Hansen <nhansen@opennebula.io>
co-authored-by: Daniel Clavijo Coca <dclavijo@opennebula.io>
co-authored-by: Pavel Czerný <pczerny@opennebula.systems>

BACKUP INTERFACE
=================

* Backups are exposed through a a special Datastore (BACKUP_DS) and
  Image (BACKUP) types. These new types can only be used for backup'ing
  up VMs. This approach allows to:

  - Implement tier based backup policies (backups made on different
    locations).

  - Leverage access control and quota systems

  - Support differnt storage and backup technologies

* Backup interface for the VMs:

  - VM configures backups with BACKUP_CONFIG. This attribute can be set
    in the VM template or updated with updateconf API call. It can include:

    + BACKUP_VOLATILE: To backup or not volatile disks

    + FS_FREEZE: How the FS is freeze for running VMs (qemu-agent,
      suspend or none). When possible backups are crash consistent.

    + KEEP_LAST: keep only a given number of backups.

  - Backups are initiated by the one.vm.backup API call that requires
    the target Datastore to perform the backup (one-shot). This is
    exposed by the onevm backup command.

  - Backups can be periodic through scheduled actions.

  - Backup configuration is updated with one.vm.updateconf API call.

* Restore interface:

  - Restores are initiated by the one.image.restore API call. This is
    exposed by oneimage restore command.

  - Restore include configurable options for the VM template

    + NO_IP: to not preserve IP addresses (but keep the NICs and network
      mapping)

    + NO_NIC: to not preserve network mappings

  - Other template attributes:

    + Clean PCI devices, including network configuration in case of TYPE=NIC
    attributes. By default it removes SHORT_ADDRESS and leave the "auto"
    selection attributes.

    + Clean NUMA_NODE, removes node id and cpu sets. It keeps the NUMA node

  - It is possible to restore single files stored in the repository by
    using the backup specific URL.

* Sunstone (Ruby version) has been updated to expose this feautres.

BACKUP DRIVERS & IMPLEMENTATION
===============================

* Backup operation is implemented by a combination of 3 driver operations:

  - VMM. New (internal oned <-> one_vmm_exec.rb) to orchestrate
    backups for RUNNING VMs.

  - TM. This commit introduces 2 new operations (and their
    corresponding _live variants):

    + pre_backup(_live): Prepares the disks to be back'ed up in the
      repository. It is specific to the driver: (i) ceph uses the export
      operation; (ii) qcow2/raw uses snapshot-create-as and fs_freeze as
      needed.
    + post_backup(_live): Performs cleanning operations, i.e. KVM
      snapshots or tmp dirs.

  - DATASTORE. Each backup technology is represented by its
    corresponfing driver, that needs to implement:

    + backup: it takes the VM disks in file (qcow2) format and stores it
      the backup repository.

    + restore: it takes a backup image and restores the associated disks
      and VM template.

    + monitor: to gather available space in the repository

    + rm: to remove existing backups

    + stat: to return the "restored" size of a disk stored in a backup

    + downloader pseudo-URL handler: in the form
      <backup_proto>://<driver_snapshot_id>/<disk filename>

BACKUP MANAGEMENT
=================

Backup actions may potentially take some time, leaving some vmm_exec threads in
use for a long time, stucking other vmm operations. Backups are planned
by the scheduler through the sched action interface.

Two attributes has been added to sched.conf:
  * MAX_BACKUPS max active backup operations in the cloud. No more
    backups will be started beyond this limit.

  * MAX_BACKUPS_HOST max number of backups per host

* Fix onevm CLI to properly show and manage schedule actions. --schedule
  supports now, as well as relative times +<seconds_from_stime>

  onvm backup --schedule now -d 100 63

* Backup is added as VM_ADMIN_ACTIONS in oned.conf. Regular users needs
  to use the batch interface or request specific permissions

Internal restructure of Scheduler:

- All sched_actions interface is now in SchedActionsXML class and files.
  This class uses references to VM XML, and MUST be used in the same
  lifetime scope.

- XMLRPC API calls for sched actions has been moved to ScheduledActionXML.cc as
  static functions.

- VirtualMachineActionPool includes counters for active backups (total
  and per host).

SUPPORTED PLATFORMS
====================
* hypervisor: KVM
* TM: qcow2/shared/ssh, ceph
* backup: restic, rsync

Notes on Ceph

* Ceph backups are performed in the following steps:
    1. A snapshot of each disk is taken (group snapshots cannot be used as
       it seems we cannot export the disks afterwards)
    2. Disks are export to a file
    3. File is converted to qcow2 format
    4. Disk files are upload to the backup repo

TODO:
  * Confirm crash consistent snapshots cannot be used in Ceph

TODO:
  * Check if using VM dir instead of full path is better to accomodate
    DS migrations i.e.:
    - Current path: /var/lib/one/datastores/100/53/backup/disk.0
    - Proposal: 53/backup/disk.0

RESTIC DRIVER
=============
Developed together with this feature is part of the EE edtion.

* It supports the SFTP protocol, the following attributes are
  supported:

  - RESTIC_SFTP_SERVER
  - RESTIC_SFTP_USER: only if different from oneadmin
  - RESTIC_PASSWORD
  - RESTIC_IONICE: Run restic under a given ionice priority (class 2)
  - RESTIC_NICE: Run restic under a given nice
  - RESTIC_BWLIMIT: Limit restic upload/download BW
  - RESTIC_COMPRESSION: Restic 0.14 implements compression (three modes:
    off, auto, max). This requires repositories version 2. By default,
    auto is used (average compression without to much CPU usage)
  - RESTIC_CONNECTIONS: Sets the number of concurrent connections to a
    backend (5 by default). For high-latency backends this number can be
    increased.

* downloader URL: restic://<datastore_id>/<snapshot_id>/<file_name>
  snapshot_id is the restic snapshot hash. To recover single disk images
  from a backup. This URLs support:

  - RESTIC_CONNECTIONS
  - RESTIC_BWLIMIT
  - RESTIC_IONICE
  - RESTIC_NICE

  These options needs to be defined in the associated datastore.

RSYNC DRIVER
=============
A rsync driver is included as part of the CE distribution. It uses the
rsync tool to store backups in a remote server through SSH:

* The following attributes are supported to configure the backup
  datastore:

  - RSYNC_HOST
  - RSYNC_USER
  - RSYNC_ARGS: Arguments to perform the rsync operatin (-aS by default)

* downloader URL: rsync://<ds_id>/<vmid>/<hash>/<file> can be used to recover
  single files from an existing backup. (RSYNC_HOST and RSYN_USER needs
  to be set in ds_id

EMULATOR_CPUS
=============

This commit includes a non related backup feature:

* Add EMULATOR_CPUS (KVM). This host (or cluster attribute) defines the
  CPU IDs where the emulator threads will be pinned. If this value is
  not defined the allocated CPU wll be used when using a PIN policy.

(cherry picked from commit a9e6a8e000e9a5a2f56f80ce622ad9ffc9fa032b)

F OpenNebula/one#5516: adding rsync backup driver

(cherry picked from commit fb52edf5d009dc02b071063afb97c6519b9e8305)

F OpenNebula/one#5516: update install.sh, add vmid to source, some polish

Signed-off-by: Neal Hansen <nhansen@opennebula.io>
(cherry picked from commit 6fc6f8a67e435f7f92d5c40fdc3d1c825ab5581d)

F OpenNebula/one#5516: cleanup

Signed-off-by: Neal Hansen <nhansen@opennebula.io>
(cherry picked from commit 12f4333b833f23098142cd4762eb9e6c505e1340)

F OpenNebula/one#5516: update downloader, default args, size check

Signed-off-by: Neal Hansen <nhansen@opennebula.io>
(cherry picked from commit 510124ef2780a4e2e8c3d128c9a42945be38a305)

LL

(cherry picked from commit d4fcd134dc293f2b862086936db4d552792539fa)
2022-10-07 22:01:37 +02:00
Tino Vázquez e28896940b M #-: Add onelog support for dev deployments 2022-09-23 14:55:57 +02:00
Tino Vázquez 2f21cd1383 L #-: Fix linting issues 2022-09-12 13:18:29 +02:00
Ruben S. Montero 907f26050f F #5940: Improve PCI Passthrough and SRIOV support
- SHORT_ADDRESS can be used to select specific devices  (useful on
  homogenous clusters or nic attach operations). This name has been
  selected because of:
    1. It is the attrbute shown host info
    2. It does not collide with the reserved ADDRESS attribute

- New test and add functions that considers both allocation methods: by
  name (VENDOR/CLASS/DEVICE) or address (SHORT_ADDRESS)

- Parameter check on VM creation

- revert and add method use the same pci_attribute function to add info
  to the VM PCI attribute

- Remove well-known attributes when parsing PCI devices (ADDRESS,
  PREV_ADDRES, BUS, FUNCTION, SLOT, NUMA_NODE, UUID)

- Support for attach and detach NIC with PCI attributes
    * onevm_exec.rb looks for PCI devices for ATTACH=YES when attaching/detaching an interface
    * script action are now written in Ruby
    * KVM module with common actions (hostdev/interface device str)
    * Minor changes in xmlparser and OpenNebulaVM classes

- PCI selection options to onevm nic-attach:
    * pci short_address
    * pci_device device ID
    * pci_vendor vendor ID
    * pci_class class ID

- VF can be configured by setting some parameters through IP link (e.g.
  MAC or VLAN_ID). This commit includes a mixin to activate_vf.

    * one_vmm_exec.rb looks for PCI VN_MAD drivers
    * VM class (VNM) adds a @pcis array
    * activate_vf should be called in the pre stage. The following drivers
      acticate VFs (VLAN_ID is implemented as 802.1Q tag)
            - 802.1Q
            - bridge
            - fw
            - ovswitch

- Improve integration with Libvirt/QEMU:

    * When attach, only activate the VF being attached
    * Attach: Use <interface> and not <hostdev> for VF. There seems to be a race
      condition between accessing the vfio device and permission setup.
    * Attach: Remove address on attach as it may fail beacuse PCI controller
      is not present, e.g.:

        ATTACHNIC: Could not attach NIC to 28534240: error: Failed to attach device
        from /dev/fd/63 error: XML error: Invalid PCI address 0000:01:01.0.
        Only PCI buses up to 0 are available ExitCode: 1

    * Detach: Detach always use <hostdev> as libvirt fails to identified the
      device just by address when using <interface>
2022-09-07 15:54:38 +02:00
Pavel Czerný 0b3f786441 F #5943: Update verbose msg for async commands (#2263)
(cherry picked from commit cd35ad4eaa)
2022-08-25 20:07:07 +02:00
Ruben S. Montero 24d4c8b9d4 B #5936: Honor VALIDATE in updateconf
(cherry picked from commit 1c1151d966f1255f81619c0f571883e5703e1e5f)
(cherry picked from commit c0ba720d31)
2022-07-28 13:38:04 +02:00
Pavel Czerný 3507c56ad4 B 5912: Fix oneflow-template auth params (#2240)
(cherry picked from commit 94fc17c36a)
2022-07-22 09:34:27 +02:00
Daniel Clavijo Coca 46fcb89634 B OpenNebula/one#5912: Fix CLI auth params (#2232)
being bypassed on oneflow-template

(cherry picked from commit acc1647bd2)
2022-07-13 19:13:48 +02:00
Carlos J. Herrera ebb242a6ef F #5834: fix port asignation when import wilds (#2164) 2022-06-23 12:11:43 +02:00
Alejandro Huertas Herrero 3d764ba465 F #5883: add JSON output to provision CLI (#2167) 2022-06-21 12:41:33 +02:00
Pavel Czerný 34c1d4345c B #5790: onevm disk-saveas can use snapshot name (#2148)
(cherry picked from commit 45b35e7768)
2022-06-20 19:31:46 +02:00
Alejandro Huertas Herrero 0146390990 B #5769: removed not needed models dependency (#2137) 2022-06-08 19:32:23 +02:00
Alejandro Huertas Herrero f1e03ff02c B #5815: fix oneprovision host ssh (#2136) 2022-06-08 19:29:54 +02:00
Alejandro Huertas Herrero 11cedda103 B #5858: double pool name in XML list (#2122) 2022-06-02 15:26:24 +02:00
Daniel Clavijo Coca c028559965 M #-: Fix onelog (#2086)
Co-authored-by: Alejandro Huertas <ahuertas@opennebula.io>
(cherry picked from commit d7484840fb)
2022-05-30 12:56:55 +02:00
Alejandro Huertas Herrero f3927bae25 F #5356: fix issue with leading 0 (#2093) 2022-05-26 19:40:02 +02:00
Alejandro Huertas Herrero 822b8f7110 F #5844: add get-vm/service to onelog (#2091) 2022-05-26 19:35:38 +02:00
Alejandro Huertas Herrero 5b35eb7946 F #5356: add CLI chmod support /u/g/o (#2054) 2022-05-18 14:51:51 +02:00
Alejandro Huertas Herrero c40f1f11db F #2287: & #2377 improve %i autoincrement (#2052) 2022-05-18 12:53:58 +02:00
Tino Vazquez f88b64b52a L #-: Minor linting corrections 2022-05-09 11:03:24 +02:00
Alejandro Huertas Herrero 21f739b6ca M #-: ask nets if empty in serv tmpl instantiate (#2014) 2022-05-06 11:40:33 +02:00
Jan Orel d7a19989fa M #-: Rename dummy provider -> onprem (#1997) 2022-05-01 11:34:42 +02:00