8243 Commits

Author SHA1 Message Date
nvazquez
15b740d397
Console access enhancements 2022-08-16 00:08:22 -03:00
Marcus Sorensen
ba7adfa6f0
Volume encryption (#135)
This PR introduces volume encryption option to service offerings and disk offerings. Fixes #136

There is a hypervisor component and a storage pool component. Hypervisors are responsible for being capable of running/using the encrypted volumes. Storage pools are responsible for being able to create, copy, resize, etc. Hypervisors will report encryption support in their details, storage pools are marked for encryption support by pool type.

The initial offering for experimental release of this feature will have support for encryption on Local, NFS, SharedMountPoint, and ScaleIO storage types.

When volumes choosing an encrypted offering are allocated to a pool, the pool type must be capable of supporting encryption and this is enforced.

When VMs are started and they have an encrypted volume, the hypervisor must be capable of supporting encryption. Also, if volumes are attached to running VMs, the attach will only work if the hypervisor supports encryption.

This change includes a few other minor changes - for example the ability to force the KVM hypervisor private IP. This was necessary in my testing of ScaleIO, where the KVM hypervisors had multiple IPs and the ScaleIO storage only functions if the hypervisor as a ScaleIO client matches IPs with what CloudStack sees as the hypervisor IP.

For experimental release of this feature, some volume workflows like extract volume and migrate volume aren't supported for encrypted volumes. In the future we could support these, as well as migrating from unencrypted to encrypted offerings, and vice versa.

It may also be possible to configure encryption specifics in the future, perhaps at the pool level or the offering level. Currently, there is only one workable encryption offering for KVM that is supported by Libvirt and Qemu for raw and qcow2 disk files, LUKS version 1. This PR ensures we at least store this encryption format associated with each volume, with the expectation that later we may have LUKS v2 volumes or something else. Thus we will have the information necessary to use each volume with Libvirt if/when other formats are introduced.

I think the most disruptive change here is probably a refactoring of the QemuImg utility to support newer flags like --object. I've tested the change against the basic Qemu 1.5.3 that comes with EL7 and I believe it is good, but it will be nice to see the results of some functional tests. Most of the other changes are limited to changing behavior only if volume encryption is requested.

Working on documentation for the CloudStack docs. One thing to note is that hypervisors that run the stock EL7 version of Qemu will not support encryption. This is tested to be detected and report properly via the CloudStack API/UI. I intend to like to have a support matrix in the CloudStack docs.

I may add a few more unit tests. I'd also like some guidance on having functional tests. I'm not sure if there's a separate framework, or if Marvin is still used, or what the current thing is.

* Add Qemu object flag to QemuImg create

* Add apache license header to new files

* Add Qemu object flag to QemuImg convert

* Set host details if hypervisor supports LUKS

* Add disk encrypt flag to APIs, diskoffering

* Schema upgrade 4.16.0.0 to 4.16.1.0 to support vol encryption

* Add Libvirt secret on disk attach, and refer to it in disk XML

* Add implementation of luks volume encryption to QCOW2 and RAW disk prep

* Start VMs that have encrypted volumes

* Add encrypt option to service offering and root volume provisioning

* Refactor volume passphrase into its own table and object

* CryptSetup, use key files to pass keys instead of command line

* Update storage types and allocators to select encryption support

* Allow agent.properties to define the hypervisor's private IP

* Implement createPhysicalDisk for ScaleIOStorageAdaptor

* UI: Add encrypt options to offerings

* UI module security updates

* Revert "UI module security updates" - belongs in base

This reverts commit a7cb7cf7f57aad38f0b5e5d67389c187b88ffd94.

* Add --target-is-zero support for QemuImg

* Allow qemu image options to be passed, API support convert encrypted

* Switch hypervisor encryption support detection to use KeyFiles

* Fixes for ScaleIO root disk encryption

* Resize root disk if it won't fit encryption header

* Use cryptsetup to prep raw root disks, when supported

* Create qcow2 formatting if necessary during initial template copy to ScaleIO

* Allow setting no cache for qemu-img during disk convert

* Use 1M sparse on qemu-img convert for zero target disks

* UI: Add volume encryption support to hypervisor details

* QemuImg use --image-opts and --object depending on version

* Only send storage commands that require encryption to hosts that support encryption

* Move host encryption detail to a static constant

* Update host selection to account for volume encryption support

Only attach volumes if encryption requirements are met

* Ensure resizeVolume won't allow changing encryption

* Catch edge cases for clearing passphrase when volume is removed

* Disable volume migration and extraction for encrypted volumes

* Register volume secret on destination host during live migration

* Fix configdrive path editing during live migration

* Ensure configdrive path is edited properly during live migration

* Pass along and store volume encryption format during creation

* Fixes for rebase

* Fix tests after rebase

* Add unit tests for DeploymentPlanningManagerImpl to support encryption

* Deployment planner tests for encryption support on last host

* Add deployment tests for encryption when calling planner

* Added Libvirt DiskDef test for encryption details

* Add test for KeyFile utility

* Add CryptSetup tests

* Add QemuImageOptionsTest

* add smoke tests for API level changes on create/list offerings

* Fix schema upgrade, do disk_offering_view first

* Fix UI to show hypervisor encryption support

* Load details into hostVO before trying to query them for encryption

* Remove whitespace in CreateNetworkOfferingTest

* Move QemuImageOptions to use constants for flag keys

* Set physical disk encrypt format during createDiskFromTemplate in KVM Agent

* Whitespace in AbstractStoragePoolAllocator

* Fix whitespace in VolumeDaoImpl

* Support old Qemu in convert

* Log how long it takes to generate a passphrase during volume creation

* Move passphrase generation to async portion of createVolume

* Revert "Allow agent.properties to define the hypervisor's private IP"

This reverts commit 6ea9377505f0e5ff9839156771a241aaa1925e70.

* Updated ScaleIO/PowerFlex storage plugin to support separate (storage) network for Host(KVM) SDC connection. (#144)

* Added smoke tests for volume encryption (in KVM). (#149)

* Updated ScaleIO pool unit tests.

* Some improvements/fixes for code smells (in ScaleIO storage plugin).

* Updated review changes for ScaleIO improvements.

* Updated host response parameter 'encryptionsupported' in the UI.

* Move passphrase generation for the volume to async portion, while deploying VM (#158)

* Move passphrase generation for the volume to async portion, while deploying VM.
* Updated logs, to include volume details.

* Fix schema upgrade, create passphrase table first

* Fixed the DB upgrade issue (as noticed in the logs below.)
DEBUG [c.c.u.d.ScriptRunner] (main:null) (logid:) CALL `cloud`.`IDEMPOTENT_ADD_FOREIGN_KEY`('cloud.volumes', 'passphrase', 'id')
ERROR [c.c.u.d.ScriptRunner] (main:null) (logid:) Error executing: CALL `cloud`.`IDEMPOTENT_ADD_FOREIGN_KEY`('cloud.volumes', 'passphrase', 'id')
ERROR [c.c.u.d.ScriptRunner] (main:null) (logid:) java.sql.SQLException: Failed to open the referenced table 'passphrase'
ERROR [c.c.u.DatabaseUpgradeChecker] (main:null) (logid:) Unable to execute upgrade script

* Fixes for snapshots with encrypted qcow2
Fixes #159 #160 #163

* Support create/delete encrypted snapshots of encrypted qcow2 volumes
* Select endpoints that support encryption when snapshotting encrypted volumes
* Update revert snapshot to be compatible with encrypted snapshots
* Disallow volume and template create from encrypted vols/snapshots

* Disallow VM memory snapshots on encrypted vols. Fixes #157

* Fix for TemplateManagerImpl unit test failure

* Support offline resize of encrypted volumes. Fixes #168

* Fix for resize volume unit tests

* Updated libvirt resize volume unit tests

* Support volume encryption on kvm only, and  passphrase generation refactor (#169)

* Fail deploy VM when ROOT/DATA volume's offering has encryption enabled, on non-KVM hypervisors
* Fail attach volume when volume's offering has encryption enabled, on non-KVM hypervisors
* Refactor passphrase generation for volume

* Apply encryption to dest volume for live local storage migration
fixes #161

* Apply encryption to data volumes during live storage migration

Fixes #161

* Use the same encryption passphrase id for migrating volumes

* Pass secret consumer during storage migration prepare

Fix for #161

* Fixes create / delete volume snapshot issue, for stopped VMs

* Block volume snapshot if encrypted and VM is running

Fixes #159

* Block snap schedules on encrypted volumes

Fix for #159

* Support cryptsetup where luks type defaults to 2

Fixes #170

* Modify domain XML secret UUID when storage migrating VM

Fix for #172

* Remove any libvirt secrets on VM stop and post migration

Fix for #172

* Update disk profile with encryption requirement from the disk offering (#176)

Update disk profile with encryption requirement from the disk offering
and some code improvements

* Updated review changes / javadoc in ScaleIOUtil

Co-authored-by: Marcus Sorensen <mls@apple.com>
Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>
Co-authored-by: Suresh Kumar Anaparti <suresh.anaparti@shapeblue.com>
2022-06-29 15:51:00 +05:30
Abhishek Kumar
92931aeeb8
schema,server,api: events improvement (#127)
Add resource ID and resource type to event.
In UI, adds Events tab in resource view for the supporting resources.

Following SQL changes needed to support events with resource details in DB,
```
 -- Alter event table to add resource_id and resource_type
ALTER TABLE `cloud`.`event`
    ADD COLUMN `resource_id` bigint unsigned COMMENT 'ID of the resource associated with the even' AFTER `domain_id`,
    ADD COLUMN `resource_type` varchar(32) COMMENT 'Account role in the project (Owner or Regular)' AFTER `resource_id`;

DROP VIEW IF EXISTS `cloud`.`event_view`;
CREATE VIEW `cloud`.`event_view` AS
    SELECT
        event.id,
        event.uuid,
        event.type,
        event.state,
        event.description,
        event.resource_id,
        event.resource_type,
        event.created,
        event.level,
        event.parameters,
        event.start_id,
        eve.uuid start_uuid,
        event.user_id,
        event.archived,
        event.display,
        user.username user_name,
        account.id account_id,
        account.uuid account_uuid,
        account.account_name account_name,
        account.type account_type,
        domain.id domain_id,
        domain.uuid domain_uuid,
        domain.name domain_name,
        domain.path domain_path,
        projects.id project_id,
        projects.uuid project_uuid,
        projects.name project_name
    FROM
        `cloud`.`event`
            INNER JOIN
        `cloud`.`account` ON event.account_id = account.id
            INNER JOIN
        `cloud`.`domain` ON event.domain_id = domain.id
            INNER JOIN
        `cloud`.`user` ON event.user_id = user.id
            LEFT JOIN
        `cloud`.`projects` ON projects.project_account_id = event.account_id
            LEFT JOIN
        `cloud`.`event` eve ON event.start_id = eve.id;
```
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-05-05 13:44:33 +05:30
Rohit Yadav
79fc6ca4d9
ui: Fix ui build and lint issue (#129)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2022-03-14 16:15:11 +05:30
Marcus Sorensen
1abcd327bf
ui: run npm audit to module security updates (#128)
* UI module security updates

* update npm run audit using npm/node@14

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
Co-authored-by: Marcus Sorensen <mls@apple.com>
Co-authored-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2022-03-14 15:16:05 +05:30
dahn
19b8da290c
prevent <ctrl>-<enter> handler from <space> from toggling checkboxes (#6027)
* prevent <ctrl>-<enter> handler from <space> from toggling checkboxes

* enter vs ctrl-enter issue remaining: toggles active switch on submit

* some fixes by hook on containing div

* other identified forms

Co-authored-by: Daan Hoogland <dahn@onecht.net>
2022-02-23 21:21:44 +05:30
Wei Zhou
ca12ef31ac
ui: add VXLAN network identifiers (VNIs) in message.guest.traffic.in.advanced.zone (#6034) 2022-02-23 18:32:52 +05:30
Nicolas Vazquez
36d3f434d1
UI: Reword the setting panel warning (#6020) 2022-02-23 14:15:48 +05:30
Wei Zhou
ac794a0c85
ui: minor change with help text on dashboard (#6003) 2022-02-17 21:48:37 -03:00
Pearl Dsilva
e0a5df50ce
CKS Enhancements and SystemVM template upgrade improvements (#5863)
* This PR/commit comprises of the following:
- Support to fallback on the older systemVM template in case of no change in template across ACS versions
- Update core user to cloud in CKS
- Display details of accessing CKS nodes in the UI - K8s Access tab
- Update systemvm template from debian 11 to debian 11.2
- Update letsencrypt cert
- Remove docker dependency as from ACS 4.16 onward k8s has deprecated support for docker - use containerd as container runtime

* support for private registry - containerd

* Enable updating template type (only) for system owned templates via UI

* edit indents

* Address comments and move cmd from patch file to cloud-init runcmd

* temporary change

* update k8s test to use k8s version 1.21.5 (instead of 1.21.3 - due to https://github.com/kubernetes/kubernetes/pull/104530)

* support for private registry - containerd

* Enable updating template type (only) for system owned templates via UI

* smooth upgrade of cks clusters

* update pom file with temp download.cloudstack.org testing links

* fix pom

* add cgroup config for containerd

* add systemd config for kubelet

* add additional info during image registry config

* update to official links
2022-02-15 18:27:14 +05:30
davidjumani
bc93163eec
ui: Allow domain admin to configure subdomain limits (#5978) 2022-02-10 07:55:45 -03:00
Hoang Nguyen
b275c29709
UI - Add Network: shows "Offering for Isolated networks with no Source Nat service" on Network Offering for normal users (#5904)
* shows "Offering for Isolated networks with no Source Nat service" for normal users

* fixes roles

* fix selected tabs
2022-02-09 14:13:31 +05:30
davidjumani
453aeb02f0
Add ID search capability to sshkeypairs (#5963) 2022-02-09 09:34:00 +05:30
Wei Zhou
6495bc1a47
packaging: display First Install and Onboarding Message (#5851)
* packaging: display First Install and Onboarding Message

* Update #5851: Update as per Rohit's comments

* Update #5851: display package name in help message

* Update #5851: display links of installed cloudstack version on UI

* Update #5851: fix vue warnings
2022-02-08 16:11:03 +01:00
Abhishek Kumar
81b49b835a
ui: fix select networks for template nic (#5933)
* ui: fix select networks for template nic

Fixes #5927

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-02-07 16:30:40 +05:30
dahn
0f1cd6009d
add logging to deployment planners (#5859)
Co-authored-by: sureshanaparti <12028987+sureshanaparti@users.noreply.github.com>

Co-authored-by: Daan Hoogland <dahn@onecht.net>
Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com>
Co-authored-by: sureshanaparti <12028987+sureshanaparti@users.noreply.github.com>
2022-02-04 17:02:32 +01:00
Abhishek Kumar
966b32c234
ui: fix ssh keypair navigation (#5931)
Fixes #5930

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-02-04 18:29:47 +05:30
Abhishek Kumar
f458964e52
ui: fix related key for section (#5929)
Fixes #5928

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-02-04 10:27:01 +05:30
Abhishek Kumar
8adb8df2fe
server: find suitable disk offering for volume upload (#5852)
* server: find suitable disk offering for volume upload

Fixes #5696

* fix npe check

* fixes, refactor, rename method and handle custom iops

* ui: allow offering selection

* list only disk offerings

* show name

* revert error check

* use checkaccess

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-02-02 16:35:47 +05:30
dahn
c1bba2a308
Do not restart VPC tiers with cleanup (#5873)
* do not restart VPC tiers with cleanup

* no option for cleanup for VPC tiers

* Update server/src/main/java/com/cloud/network/NetworkServiceImpl.java

* paramNames

* remove superfluent parameter

Co-authored-by: Daan Hoogland <dahn@onecht.net>
Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com>
2022-01-31 17:59:26 +05:30
Abhishek Kumar
5f07e4daaf
ui: fix filtering readonly details while VM update (#5887)
* ui: fix filtering readonly details while VM update

* refactor

* error on add

Fixes #5724

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-31 17:19:31 +05:30
davidjumani
6fa8538666
Adding placeholders for custom NSP vues (#5620)
* Adding placeholders for custom NSP vues

* Fix decorator

* Fixing gslbproviderprivateip description
2022-01-27 20:11:35 +05:30
Hoang Nguyen
ee9c05b5fa
UI - Added option to allow users to select volumes when doing destroy the list of VMs (#5893)
* added option to allow users to select volumes when doing destroy list of VMs

* fixes
2022-01-27 11:09:48 +05:30
Hoang Nguyen
065847e6af
UI: Fixes asynchronous when destroying wrong item VM (#5884)
* fix asynchronous error when deleting VMs one by one

* fixes error open modal
2022-01-27 11:05:35 +05:30
Abhishek Kumar
d18ef1c0fd
ui: add custom form for update template (#5434)
* ui: add custom form for update template

* label fix

* changes and fix

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-25 10:47:41 +05:30
Abhishek Kumar
68a5e5aa77
ui: show password with success notification (#5889)
Fixes #5888

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-24 17:05:07 +05:30
sureshanaparti
4996b800b5
Now correct values are shown when configuring limits for a domain. (#5874) (#5880)
Now correct values are shown when configuring limits for a domain. (#5874) (#5880)

Co-authored-by: JoaoJandre <48719461+JoaoJandre@users.noreply.github.com>
Co-authored-by: Joao <JoaoJandre@gitlab.com>
2022-01-20 14:37:51 +05:30
dahn
fb35f46a96
Delete ldap config from UI (#5871)
* add params to delete command

* pass known params

Co-authored-by: Daan Hoogland <dahn@onecht.net>
2022-01-18 10:21:51 +01:00
Hoang Nguyen
0e2c09baca
UI - Fixes Pod, Cluster selected is incorrect on addHost dialog (#5869)
* fix pod selected is incorrect

* fixes fetch cluster with podid empty

* clear clusterid field
2022-01-18 14:35:28 +05:30
Abhishek Kumar
f5b0d2f056
ui: fix create user domain, account selection (#5487)
* ui: fix create user domain, account selection

* fetch accounts only after domains

* refresh on saml configure

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-17 16:30:29 +05:30
Hoang Nguyen
a42ed1fb89
add a setting to config.json that allows users to set theme (#5584) 2022-01-17 11:30:56 +05:30
Abhishek Kumar
59a615cf21
ui: fix deploy vm in basic zone (#5856)
* ui: fix deploy vm in basic zone

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-14 16:29:35 +05:30
Hoang Nguyen
619c754903
Clear cache APIs when the switch domain with SAML user (#5855) 2022-01-14 16:20:56 +05:30
Abhishek Kumar
c86b98e682
ui: show account configure limits tab for domain-admin (#5858)
Fixes #5676

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-13 14:08:02 +01:00
Hoang Nguyen
4746509c82
[UI] Cancel all requests api, async jobs in UI when user logs out (#5663)
* cancel requests in UI when user logs out

* clear notification, message from UI after logout
2022-01-13 17:44:49 +05:30
Hoang Nguyen
001f4213c8
UI - Deploy VM with params from the template, iso, network pages (#5653)
* deploy VM with params from the template, iso, network pages

* remove default-checked not necessary
2022-01-13 16:59:41 +05:30
Abhishek Kumar
c17ae740f4
ui: fix getDiagnosticsData files field (#5853)
Fixes #5707

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-12 13:52:01 +05:30
Abhishek Kumar
223bc11d2a
ui: fix paging in enable static NAT form (#5849)
Fixes #5715

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-11 22:31:02 +05:30
Gabriel Beims Bräscher
2e2d328cde
Add toggle button on the UI for list including elements in projects. (#5790)
* Allow to use projectid=-1 and list all resources (e.g. VMs) regardless of their project.
2022-01-11 21:30:30 +05:30
Abhishek Kumar
c08592cad8
ui: update vm haenable only for supported vms (#5847)
For VMs which have service offering that does not allow HA, haenable option will be not shown in the UpdateVM UI form.

Fixes #5743

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-11 14:55:11 +05:30
Hoang Nguyen
4916f3c90d
UI - Fix Locked "Override Root Disk Size" switch (#5843)
* Fix Locked "Override Root Disk Size" switch

* fixes ut
2022-01-10 19:04:46 +05:30
Hoang Nguyen
0f926b5d68
UI: Add s3 provider option to create secondary storage (#5726)
* add s3 provider option to create secondary storage

* fixes label name

* add storagepolicy for swift provider
2022-01-10 19:01:53 +05:30
Abhishek Kumar
feb4343abe
ui: fix create network/vpc offering form (#5840)
* ui: fix create network/vpc offering form

Fixes #5838

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* fix inlinemode

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
2022-01-08 08:41:58 +05:30
Hoang Nguyen
3cbde8cd6c
UI - Hide shrink disk option on XCP-NG/Xenserver (#5829)
* hide shrink disk option on XCP-NG/Xenserver
2022-01-06 17:41:54 +05:30
Hoang Nguyen
f071873d84
UI: Fix new UI missing 4 parameters when adding a BareMetal host (#5812)
* fix new UI missing 4 parameters when adding a BareMetal host

* remove test options

* add rule for hosttag with baremetal

* fixes password not provided
2022-01-04 15:13:31 +05:30
Rakesh
2bd1dc1e14
Enable resetting config values to default value (#4230)
* Enable resetting config values to default value

Provide reset button to zone,cluster,domain,account,
primary and secondary storage so that config values
can be reset to default value

* fix ui issue

* Update test/integration/smoke/test_reset_configuration_settings.py

* Update test/integration/smoke/test_reset_configuration_settings.py

Co-authored-by: Rakesh Venkatesh <rakeshv@apache.org>
Co-authored-by: dahn <daan.hoogland@gmail.com>
2022-01-03 21:55:30 +01:00
Hoang Nguyen
4392cc4d48
ui: refactoring $notification according to the old version (#5819)
Related to PR #5549 changed the notification from $notification to $showNotification. This PR aims to change it back to the way it was for easier use while keeping the delete all button.
2022-01-03 20:59:49 +05:30
Hoang Nguyen
10bda8549b
ui: auto-prefill edit tariff label (#5714) 2021-12-30 16:27:56 +05:30
Abhishek Kumar
d7a9873053
ui: fix add network offering for vpc (#5809)
* ui: fix add network offering for vpc

Fixes issues with form related to supported services provider and router service offering when offering to be created for VPC.

Fixes #5807

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* fix issues getting with making select element update on options change (loop infinity) (#72)

* fixes

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

Co-authored-by: Hoang Nguyen <hoangnm@unitech.vn>
2021-12-30 16:26:54 +05:30
Hoang Nguyen
eb04a46541
ui: Add clear all notification button (#5549)
* add clear all notification button

* change position set count notify

* get notification count

* set label transliteration

* add margin for notification

* change position of clear notification button
2021-12-30 16:24:17 +05:30