Review `powermax-cinder`for listing

Hello, the powermax-cinder charm allows cinder to manage volumes with a Dell PowerMax storage system as the backend. From configuration to operations, it enables the end user to automate the deployment and the usage of Cinder with Dell PowerMax.

We would like to have this charm visible and searchable from Charmhub.

Can you please help us to have it reviewed?

Metadata links

CI Links

Documentation Links

Anyone to review it please?

Sorry for the delay @jproque15130 . I’ll review this tomorrow.

Is there some way I can see the charm working, like a demo video or something?

Yes I recorded a quick video, how can I share it?

Post a link here if it can be publicly viewed, or if you’d prefer it wasn’t, then email a link (or share in some other way) to me (tony.meyer@canonical.com). Thanks!

Issues:

  • The README has a link to https://bugs.launchpad.net/charm-cinder-powermax/+filebug, which doesn’t work for me.
  • metadata.yaml has a docs link (to the README), which I think is sufficient for this charm, but this doesn’t show up on Charmhub. I’m not sure if this is because it was added since the latest published release or something else. If there has been a release since it was added, then maybe you need to have it in the documentation field in charmcraft.yaml now. If there hasn’t been a release, could you do one (to edge, for example)?
  • The “build and test” workflow has a typo - it references “tests.yml” rather than “tests.yaml”, so it doesn’t run successfully.

Once I can see the video I can tick off the first item, and for the integration tests I’ve been asked to find some Zaza docs, so I’ll try to do that now.

Review item Objective Review criteria Review comment
Intended functionality Despite all the items for publication readiness, the charm must work. Charm does what it is meant to do - ideally done in a demo. :heavy_check_mark:
Charmhub.io charm detail page A complete and consistent appearance of the charm is required for a quality impression of the charm collection. The overall appearance looks good, which means:
* The name complies with the naming guidelines.
* The publisher is identified.
* The links are provided.
* The documentation looks reasonable.
:heavy_check_mark:
Source repository Generally, the source code for charms must be accessible by the community for transparency and collaboration. It is not entirely mandatory to have the charm published as OSS for review, but the repository must be accessible from the persons working on the review request. :heavy_check_mark:
Coding conventions The source code of the charm is accessible in the sense of approachability. Consistent source code style and formatting are also considered a sign of being committed to quality. The implemented checks for coding conventions are reasonable and implemented in the regular CI/CD implementation. :heavy_check_mark:
Release automation implementation An implementation for automated releasing to charmhub.io improves the ability to provide updates covering vulnerabilities quickly. Release automation for unstable channels to enable testing when new versions of the charm code or the workload become available. :heavy_check_mark:
Unit tests implementation In particular, for the charms review, assuring a reasonable test suite is essential to allow for automated releases in future. The unit tests show relevant coverage. It is a case-dependent review.At the time of review, the test runs successfully. :heavy_check_mark:
Unit tests results Availability of test results is mandatory for a working collaborative project. URL to test results from CI/CD automation. :heavy_check_mark:
Installation test implemented (could be part of the integration test) In particular, for the charm review, assuring a reasonable test suite is essential to allow for automated releases in future. With this test, for every build, it is ensured that the installation is successful. An implementation for checking the installation is present. The implementation should also check for successful installation as part of the automation, and the workload behaves as expected. At the time of review, the test runs successfully. :heavy_check_mark:
Installation test results Availability of test results is mandatory for a working collaborative project. URL to test results from CI/CD automation.
Integration tests implemented In particular for the review of charms, assuring a reasonable test suite is important to allow for automated releases in future. With this test, for every build, it is ensured that the integration with other charms is successful. An implementation for testing the required integrations (if applicable) is present. The implementation should also check for successful integration as part of he automation and the workload behaves as expected.
At the time of review, the test runs successfully.
Integration test results Availability of test results is mandatory for a working collaborative project. URL to test results from CI/CD automation.
Documentation for usage The documentation for using the charm should be separate from the documentation for developing or contributing to the charm. URL to this documentation is present. :heavy_check_mark:
Documentation for contributing The documentation for contributing to the charm should be separate from the documentation for developing or using the charm. URL to this documentation is present. :heavy_check_mark:
Licensing statement For the charm shared, OSS or not, the licensing terms of the charm are clarified (which also implies an identified authorship of the charm). URL to the ruling licensing statement is present. :heavy_check_mark:

Hey Tony,

I have fixed the link issue and added documentation link to the charmcraft.yaml file.

I tried to publish to edge but it looks like charmcraft is unable to pack the charm anymore.

here’s the log from the publish workflow:

Run canonical/charming-actions/upload-charm@2.6.2
  with:
    charmcraft-channel: 3.x/stable
    credentials: ***
    github-token: ***
    channel: latest/edge
    destructive-mode: true
    charm-path: .
    upload-image: true
    pull-image: true
    github-tag: true
/usr/bin/sudo snap install charmcraft --classic --channel 3.x/stable
charmcraft (3.x/stable) 3.5.3 from Canonical** installed
/usr/bin/sudo charmcraft pack --quiet --destructive-mode
Failed to run the build script for part 'charm'.
Recommended resolution: Check the build output and verify the project can work with the 'charm' plugin.
For more information, check out: https://canonical-charmcraft.readthedocs-hosted.com/en/3.5.3/reference/plugins/
Full execution log: '/root/.local/state/charmcraft/log/charmcraft-20250911-085111.980422.log'
Error: The process '/usr/bin/sudo' failed with exit code 1
Error: Error: The process '/usr/bin/sudo' failed with exit code 1
    at ExecState._setResult (/home/runner/work/_actions/canonical/charming-actions/2.6.2/dist/upload-charm/index.js:3950:25)
    at ExecState.CheckComplete (/home/runner/work/_actions/canonical/charming-actions/2.6.2/dist/upload-charm/index.js:3933:18)
    at ChildProcess.<anonymous> (/home/runner/work/_actions/canonical/charming-actions/2.6.2/dist/upload-charm/index.js:3827:27)
    at ChildProcess.emit (node:events:524:28)
    at maybeClose (node:internal/child_process:1104:16)
    at ChildProcess._handle.onexit (node:internal/child_process:304:5)
/usr/bin/sudo test -d /root/snap/charmcraft/common/cache/charmcraft/log
No charmcraft logs generated, skipping artifact upload.

ok let me find a way to share it with you.

I have noticed some errors related to pip librairies.

Collecting lxml (from zaza.openstack->-r requirements.txt (line 4))
::    ::   Downloading lxml-6.0.1.tar.gz (4.1 MB)
::    ::      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.1/4.1 MB 151.6 MB/s eta 0:00:00
::    ::   Installing build dependencies: started
::    ::   Installing build dependencies: finished with status 'done'
::    ::   Getting requirements to build wheel: started
::    ::   Getting requirements to build wheel: finished with status 'error'
::    ::   error: subprocess-exited-with-error
::    ::
::    ::   × Getting requirements to build wheel did not run successfully.
::    ::   │ exit code: 1
::    ::   ╰─> [3 lines of output]
::    ::       Building lxml version 6.0.1.
::    ::       Building without Cython.
::    ::       Error: Please make sure the libxml2 and libxslt development packages are installed.
::    ::       [end of output]
::    ::
::    ::   note: This error originates from a subprocess, and is likely not a problem with pip.
::    :: error: subprocess-exited-with-error
::    ::
::    :: × Getting requirements to build wheel did not run successfully.
::    :: │ exit code: 1
::    :: ╰─> See above for output.
::    ::
::    :: note: This error originates from a subprocess, and is likely not a problem with pip.
::    ::
Notice: ::    :: [notice] A new release of pip is available: 24.1.1 -> 25.2
Notice: ::    :: [notice] To update, run: python3 -m pip install --upgrade pip
:: Traceback (most recent call last):
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 499, in <module>
::     main()
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 494, in main
::     builder.build_charm()
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 95, in build_charm
::     self.handle_dependencies()
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 368, in handle_dependencies
::     self._install_dependencies(staging_venv_dir)
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/instrum.py", line 152, in _f
::     return func(*args, **kwargs)
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 298, in _install_dependencies
::     _process_run(
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 428, in _process_run
::     raise RuntimeError(
:: RuntimeError: Subprocess command ['/root/parts/charm/build/staging-venv/bin/pip', 'install', '--no-binary=:all:', '--requirement=requirements.txt'] execution failed with retcode 1
Failed to run the build script for part 'charm'.
Detailed information: 
:: + env -i LANG=C.UTF-8 LC_ALL=C.UTF-8 CRYPTOGRAPHY_OPENSSL_NO_LEGACY=true PIP_CONSTRAINT=/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/parts/plugins/charm-constraints.txt PATH=/snap/charmcraft/7286/libexec/charmcraft:/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SNAP=/snap/charmcraft/7286 SNAP_ARCH=amd64 SNAP_NAME=charmcraft SNAP_VERSION=3.5.3 /snap/charmcraft/7286/bin/python3 -u -I /snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py --builddir /root/parts/charm/build --installdir /root/parts/charm/install --entrypoint /root/parts/charm/build/src/charm.py -p pip -p wheel -p setuptools -r requirements.txt
:: Traceback (most recent call last):
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 499, in <module>
::     main()
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 494, in main
::     builder.build_charm()
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 95, in build_charm
::     self.handle_dependencies()
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 368, in handle_dependencies
::     self._install_dependencies(staging_venv_dir)
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/instrum.py", line 152, in _f
::     return func(*args, **kwargs)
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 298, in _install_dependencies
::     _process_run(
::   File "/snap/charmcraft/7286/lib/python3.10/site-packages/charmcraft/charm_builder.py", line 428, in _process_run
::     raise RuntimeError(
:: RuntimeError: Subprocess command ['/root/parts/charm/build/staging-venv/bin/pip', 'install', '--no-binary=:all:', '--requirement=requirements.txt'] execution failed with retcode 1

The packing issue is because the Zaza packages have been added to the charm’s requirements.txt. Zaza is generally (and specifically here, from what I can tell) used only for testing, so shouldn’t be needed in requirements.txt, which is for run-time dependencies (it’s already in the test-requirements.txt file.

It is possible to get Zaza (and all the things it brings with it) to build into the charm, but I don’t think there’s any reason to do this. So you should be able to fix that by just removing these from the requirements list:

$ git diff
diff --git a/requirements.txt b/requirements.txt
index e0d2729..86315ca 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,2 @@
 ops
 git+https://opendev.org/openstack/charm-ops-openstack#egg=ops_openstack
-git+https://github.com/openstack-charmers/zaza.git#egg=zaza
-git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack

I assume the issue with providing a demo is related to the email thread about deploying? I’ll see if I can encourage the Juju team to get to that ticket - unfortunately, it’s outside anything I can directly do.

I just apply the requested changes and I can pack it now.

Demo is available, just let me know how do you want me to share it? the file is about 40MB.

1 Like

I think Canonical’s email will allow incoming attachments up to 50 MB so you might be able to email that. Or here’s a Google Drive folder that you should be able to upload to. If neither of those work, I could give you a WhatsApp number to send it to? (I think the limited there is in GB).

I was a bit off wrt size, it’s only 13MB, I have pushed the video on the Google Drive.

Perfect, thanks! I appreciate the nice background music too :smile:

So just the install/integration test automation. I think I’m meant to provide info on running Zaza here, right? I didn’t hear back from people about that. I’ll see if I can figure that out tonight/tomorrow.

Hi Tony, any update from your side?

I’ve failed to get more information about Zaza and integration testing within the OpenStack side of charming. I have an in-person meeting about this in a couple of weeks, but I don’t think we should block this longer. I think this is fine for listing now, and I’ll circle back on integration testing on these charms once I have a better story.

@superalpaca could you please turn on public listing for cinder-powermax, and also transfer ownership to dell-openstack? Thanks!

I’ve listed the cinder-powermax charm and transferred ownership to dell-openstack as requested.

Let me know if anything looks off.

Thanks,

Deep

2 Likes

Thank you all for your efforts.

1 Like