Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

list by isEncrypted #8643

Merged
merged 4 commits into from
Jun 12, 2024
Merged

Conversation

DaanHoogland
Copy link
Contributor

Description

This PR...

Fixes: #8635

very much a PoC on this.

Types of changes

  • Breaking change (fix or feature that would cause existing functionality to change)
  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Enhancement (improves an existing feature and functionality)
  • Cleanup (Code refactoring and cleanup, that may add test cases)
  • build/CI

Feature/Enhancement Scale or Bug Severity

Feature/Enhancement Scale

  • Major
  • Minor

Bug Severity

  • BLOCKER
  • Critical
  • Major
  • Minor
  • Trivial

Screenshots (if appropriate):

How Has This Been Tested?

How did you try to break this feature and the system with this change?

Copy link

codecov bot commented Feb 13, 2024

Codecov Report

Attention: 19 lines in your changes are missing coverage. Please review.

Comparison is base (9b18243) 30.74% compared to head (e1eeca8) 30.74%.
Report is 25 commits behind head on main.

Files Patch % Lines
...main/java/com/cloud/storage/dao/VolumeDaoImpl.java 21.42% 11 Missing ⚠️
...ain/java/com/cloud/api/query/QueryManagerImpl.java 33.33% 7 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #8643      +/-   ##
============================================
- Coverage     30.74%   30.74%   -0.01%     
+ Complexity    33053    33042      -11     
============================================
  Files          5352     5352              
  Lines        374460   374485      +25     
  Branches      54610    54614       +4     
============================================
- Hits         115123   115122       -1     
- Misses       244068   244089      +21     
- Partials      15269    15274       +5     
Flag Coverage Δ
simulator-marvin-tests 24.58% <29.62%> (-0.01%) ⬇️
uitests 4.38% <ø> (ø)
unit-tests 16.41% <11.11%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

@weizhouapache
Copy link
Member

@DaanHoogland
maybe better to add the column to volume_view

@DaanHoogland
Copy link
Contributor Author

@DaanHoogland maybe better to add the column to volume_view

makes sense but the field doesn't exist. I'll refresh my sql-fu to get it in.

@weizhouapache
Copy link
Member

@DaanHoogland maybe better to add the column to volume_view

makes sense but the field doesn't exist. I'll refresh my sql-fu to get it in.

with your PR #8647 , you need to add a line to engine/schema/src/main/resources/META-INF/db/views/cloud.volume_view.sql

    `volumes`.`encrypt_format` AS `encrypt_format`,

then add the field in VolumeJoinVO

@DaanHoogland
Copy link
Contributor Author

@DaanHoogland maybe better to add the column to volume_view

makes sense but the field doesn't exist. I'll refresh my sql-fu to get it in.

with your PR #8647 , you need to add a line to engine/schema/src/main/resources/META-INF/db/views/cloud.volume_view.sql

    `volumes`.`encrypt_format` AS `encrypt_format`,

then add the field in VolumeJoinVO

I thought you meant a field isEncrypted. this is simpler, thanks.

@weizhouapache
Copy link
Member

@DaanHoogland maybe better to add the column to volume_view

makes sense but the field doesn't exist. I'll refresh my sql-fu to get it in.

with your PR #8647 , you need to add a line to engine/schema/src/main/resources/META-INF/db/views/cloud.volume_view.sql

    `volumes`.`encrypt_format` AS `encrypt_format`,

then add the field in VolumeJoinVO

I thought you meant a field isEncrypted. this is simpler, thanks.

if need, you can add a method isEncrypted in VolumeJoinVO
😃

@vishesh92
Copy link
Member

@DaanHoogland Can we revisit this after we merge #8321? This will probably result in conflicts with #8321.

@DaanHoogland
Copy link
Contributor Author

@blueorangutan package

@codecov-commenter
Copy link

codecov-commenter commented Apr 26, 2024

Codecov Report

Attention: Patch coverage is 0% with 15 lines in your changes missing coverage. Please review.

Project coverage is 14.96%. Comparing base (7aacbcb) to head (f1b5b2d).
Report is 6 commits behind head on 4.19.

Files Patch % Lines
...ain/java/com/cloud/api/query/QueryManagerImpl.java 0.00% 6 Missing ⚠️
...dstack/api/command/user/volume/ListVolumesCmd.java 0.00% 3 Missing ⚠️
...apache/cloudstack/api/response/VolumeResponse.java 0.00% 2 Missing ⚠️
...ava/com/cloud/api/query/dao/VolumeJoinDaoImpl.java 0.00% 2 Missing ⚠️
...main/java/com/cloud/api/query/vo/VolumeJoinVO.java 0.00% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##               4.19    #8643      +/-   ##
============================================
- Coverage     14.96%   14.96%   -0.01%     
- Complexity    10998    10999       +1     
============================================
  Files          5373     5373              
  Lines        469301   469320      +19     
  Branches      61031    57815    -3216     
============================================
- Hits          70224    70219       -5     
- Misses       391302   391328      +26     
+ Partials       7775     7773       -2     
Flag Coverage Δ
uitests 4.30% <ø> (-0.01%) ⬇️
unittests 15.67% <0.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@weizhouapache
Copy link
Member

Since the query uses VolumeVO now, the fix could be much simple like

        if (cmd.isEncrypted() != null) {
            if (cmd.isEncrypted()) {
                volumeSearchBuilder.and("encryptFormat", volumeSearchBuilder.entity().getEncryptFormat(), SearchCriteria.Op.NNULL);
            } else {
                volumeSearchBuilder.and("encryptFormat", volumeSearchBuilder.entity().getEncryptFormat(), SearchCriteria.Op.NULL);
            }
        }

@weizhouapache
Copy link
Member

code looks good

@DaanHoogland
a suggestion, can you add encryptformat to the VolumeResponse ? (admin only)

@DaanHoogland
Copy link
Contributor Author

code looks good

@DaanHoogland a suggestion, can you add encryptformat to the VolumeResponse ? (admin only)

We could do @weizhouapache , but as this is not touching the actual response object but only the selection criteria, it seems to be a separate issue to me. The Cmd type is not know at the time of Response creation. It goes two levels deep onto the stack in Helper classes. ViewResponseHelper::createVolumeResponse(..) > ApiDBUtils::newVolumeResponse(..)/fillVolumeData(..). This unless we want to always add the encryption type of course. In that case it is no effort.

@weizhouapache
Copy link
Member

code looks good
@DaanHoogland a suggestion, can you add encryptformat to the VolumeResponse ? (admin only)

We could do @weizhouapache , but as this is not touching the actual response object but only the selection criteria, it seems to be a separate issue to me. The Cmd type is not know at the time of Response creation. It goes two levels deep onto the stack in Helper classes. ViewResponseHelper::createVolumeResponse(..) > ApiDBUtils::newVolumeResponse(..)/fillVolumeData(..). This unless we want to always add the encryption type of course. In that case it is no effort.

ok @DaanHoogland
it is a little bit difficult to verify if a volume is encrypted in the listVolumes API reponse.

I just checked the volume_view, it does not have encrypt_format so may need to recreate the volume_view
let's fix it in another pr.

@DaanHoogland
Copy link
Contributor Author

@blueorangutan package

@blueorangutan
Copy link

@DaanHoogland a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

Copy link
Member

@weizhouapache weizhouapache left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code lgtm

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9673

@DaanHoogland
Copy link
Contributor Author

@blueorangutan test

@blueorangutan
Copy link

@DaanHoogland a [SL] Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@blueorangutan
Copy link

[SF] Trillian test result (tid-10258)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 53578 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr8643-t10258-kvm-centos7.zip
Smoke tests completed. 129 look OK, 2 have errors, 0 did not run
Only failed and skipped tests results shown below:

Test Result Time (s) Test File
test_01_events_resource Error 421.82 test_events_resource.py
test_05_rvpc_multi_tiers Failure 543.50 test_vpc_redundant.py
test_05_rvpc_multi_tiers Error 543.52 test_vpc_redundant.py

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9821

@DaanHoogland DaanHoogland changed the base branch from main to 4.19 June 10, 2024 13:28
@DaanHoogland
Copy link
Contributor Author

@blueorangutan package

@blueorangutan
Copy link

@DaanHoogland a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9846

Copy link

This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.

Copy link
Contributor

@kiranchavala kiranchavala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, Tested the API and it works fine

  1. Create a encrypted custom disk offering
  2. Create a data disk with the disk offering mentioned in step 1
  3. attach it to a running vm
  4. Execute the list volume with isencyrpted parameter

(cmk) 🐱 > list volumes isencrypted=true
{
  "count": 1,
  "volume": [
    {
      "account": "admin",
      "clusterid": "fe78444f-224d-442d-ac45-a476151854e2",
      "clustername": "p1-c1",
      "created": "2024-06-11T07:14:48+0000",
      "destroyed": false,
      "deviceid": 1,
      "diskioread": 0,
      "diskiowrite": 0,
      "diskkbsread": 0,
      "diskkbswrite": 0,
      "diskofferingdisplaytext": "encrypt",
      "diskofferingid": "9d7cf65d-003c-4372-ba4e-af94e535cec6",
      "diskofferingname": "encrypt",
      "displayvolume": true,
      "domain": "ROOT",
      "domainid": "ee255cb8-27ba-11ef-9848-1e00210001ab",
      "encryptformat": "luks",
      "hasannotations": false,
      "hypervisor": "KVM",
      "id": "179b9925-1867-4b0f-abbc-40ebe964575e",
      "isextractable": true,
      "name": "DATA-3",
      "path": "179b9925-1867-4b0f-abbc-40ebe964575e",
      "podid": "40c6e7f0-a613-49ae-847c-3fe8c2d3623f",
      "podname": "Pod1",
      "provisioningtype": "thin",
      "quiescevm": false,
      "size": 10737418240,
      "state": "Ready",
      "storage": "ref-trl-6792-k-Mol8-kiran-chavala-kvm-pri1",
      "storageid": "230486b2-6c8f-3338-978e-9147ba94829a",
      "storagetype": "shared",
      "supportsstoragesnapshot": false,
      "tags": [],
      "type": "DATADISK",
      "virtualmachineid": "4c300cb2-d3b2-489f-841e-546e98a3021a",
      "vmdisplayname": "vm1",
      "vmname": "vm1",
      "vmstate": "Running",
      "vmtype": "User",
      "zoneid": "424ee83b-ded2-428e-a8e5-8a4a1b124cb9",
      "zonename": "ref-trl-6792-k-Mol8-kiran-chavala"
    }
  ]
}

@kiranchavala
Copy link
Contributor

@blueorangutan test

@blueorangutan
Copy link

@kiranchavala a [SL] Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@blueorangutan
Copy link

[SF] Trillian test result (tid-10410)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 45277 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr8643-t10410-kvm-centos7.zip
Smoke tests completed. 131 look OK, 0 have errors, 0 did not run
Only failed and skipped tests results shown below:

Test Result Time (s) Test File

…e/ListVolumesCmd.java

Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>
@DaanHoogland
Copy link
Contributor Author

@blueorangutan package

@blueorangutan
Copy link

@DaanHoogland a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

Copy link
Contributor

@sureshanaparti sureshanaparti left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clgtm

@blueorangutan
Copy link

Packaging result [SF]: ✔️ el7 ✔️ el8 ✔️ el9 ✔️ debian ✔️ suse15. SL-JID 9877

@sureshanaparti
Copy link
Contributor

Merging this based on the reviews & test results.

@sureshanaparti sureshanaparti merged commit 4de975f into apache:4.19 Jun 12, 2024
25 of 26 checks passed
@sureshanaparti sureshanaparti modified the milestones: 4.20.0.0, 4.19.1.0 Jun 12, 2024
@DaanHoogland DaanHoogland deleted the ghi8635_listEncryptedVolumes branch June 12, 2024 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Improve the list volume api to show only the encrypted volumes
7 participants