Bug 2244566 - [ocs-operator clone] Redundant dependency on Vault library - should be removed
Summary: [ocs-operator clone] Redundant dependency on Vault library - should be removed
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat OpenShift Data Foundation
Classification: Red Hat Storage
Component: ocs-operator
Version: 4.11
Hardware: Unspecified
OS: Unspecified
unspecified
urgent
Target Milestone: ---
: ODF 4.14.0
Assignee: Nitin Goyal
QA Contact: Elena Bondarenko
URL:
Whiteboard:
Depends On: 2242374 2244570 2251318
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-10-17 02:32 UTC by Mudit Agarwal
Modified: 2023-11-24 09:09 UTC (History)
7 users (show)

Fixed In Version: 4.14.0-154
Doc Type: No Doc Update
Doc Text:
Clone Of: 2242374
Environment:
Last Closed: 2023-11-08 18:55:27 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github red-hat-storage ocs-operator pull 2214 0 None Merged set FlappingRestartIntervalHours to 24 hrs 2023-10-17 14:20:51 UTC
Github red-hat-storage ocs-operator pull 2219 0 None Merged Bug 2244517:[release-4.14] set FlappingRestartIntervalHours to 24 hrs 2023-10-17 14:37:21 UTC
Red Hat Product Errata RHSA-2023:6832 0 None None None 2023-11-08 18:56:29 UTC

Description Mudit Agarwal 2023-10-17 02:32:01 UTC
+++ This bug was initially created as a clone of Bug #2242374 +++

Description of problem (please be detailed as possible and provide log
snippests):
We currently have a redundant dependency on Vault SDKs that we don't use.

Due to a change in Vault licensing, we need to replace the BSL libraries using BSL license. 
We have the BSL license in use in the following containers: 
mcg-operator-container
odf-multicluster-operator-container
odf-operator-container
rook-ceph-operator-container
odr-operator-container

Libraries:

https://github.com/hashicorp/consul - BSL
https://github.com/hashicorp/terraform - BSL
https://github.com/hashicorp/vault - BSL
https://github.com/hashicorp/go-uuid - MPL. 
https://github.com/hashicorp/errwrap - MPL
https://github.com/hashicorp/go-cleanhttp - MPL
https://github.com/hashicorp/go-hclog - MIT 
https://github.com/hashicorp/go-immutable-radix - MPL
https://github.com/hashicorp/go-multierror - MPL
https://github.com/hashicorp/go-retryablehttp - MPL
https://github.com/hashicorp/go-rootcerts - MPL 
https://github.com/hashicorp/go-secure-stdlib -MPL
https://github.com/hashicorp/go-sockaddr - MPL 
https://github.com/hashicorp/go-plugin - MPL
https://github.com/hashicorp/eventlogger - MPL
https://github.com/hashicorp/go-discover - MPL
https://github.com/hashicorp/go-kms-wrapping - MPL
https://github.com/hashicorp/go-memdb - MPL
https://github.com/hashicorp/go-msgpack - MIT
https://github.com/hashicorp/go-raftchunking - MPL
https://github.com/hashicorp/go-version - MPL

--- Additional comment from RHEL Program Management on 2023-10-05 18:27:15 UTC ---

This bug having no release flag set previously, is now set with release flag 'odf‑4.14.0' to '?', and so is being proposed to be fixed at the ODF 4.14.0 release. Note that the 3 Acks (pm_ack, devel_ack, qa_ack), if any previously set while release flag was missing, have now been reset since the Acks are to be set against a release flag.

--- Additional comment from RHEL Program Management on 2023-10-05 18:27:15 UTC ---

Since this bug has severity set to 'urgent', it is being proposed as a blocker for the currently set release flag. Please resolve ASAP.

--- Additional comment from Blaine Gardner on 2023-10-10 18:32:35 UTC ---

For Rook, I tracked the top-level Vault gomod inclusion (github.com/hashicorp/vault) to github.com/libopenstorage/secrets which imports github.com/hashicorp/vault/command. Because 'command' is part of the Vault product, it is BUSL-1.1 licensed. My quick initial investigation shows that it should be straightforward to change to using github.com/hashicorp/vault/api in libopenstorage/secrets to make use of Vault's MPL-2.0 licensed API code.

The risk I identified is that libopenstorage/secrets does not have very regular contributors. I created an issue and tagged 6 recent contributors and reviewers to the project to try to get a commitment to merging the code within 2 weeks: https://github.com/libopenstorage/secrets/issues/79

If I don't get a positive response, then Rook will have to resort to using Vaul's API directly rather than using the libopenstorage/secrets library, which is not preferred. In the meantime, I'll begin making changes to a personal fork of libopenstorage/secrets to verfiy that the changes I'm proposing will fix the licensing issue.

---

I cannot speak to whether other ODF components will need to make different changes. I was able to find the source of the inclusion by deleting the line `github.com/hashicorp/vault v1.13.7 // indirect` in Rook's `go.mod` file and running `go mod tidy` to find output like below, and then investigating each import manually:

go: finding module for package github.com/hashicorp/vault/sdk/version
go: downloading github.com/hashicorp/vault/sdk v0.10.2
go: downloading github.com/hashicorp/vault v1.15.0
go: github.com/rook/rook/pkg/daemon/ceph/osd/kms imports
        github.com/libopenstorage/secrets/vault/utils imports
        github.com/hashicorp/vault/command/agent/auth tested by
        github.com/hashicorp/vault/command/agent/auth.test imports
        github.com/hashicorp/vault/http imports
        github.com/hashicorp/vault/sdk/version

--- Additional comment from Blaine Gardner on 2023-10-10 20:34:23 UTC ---

I have a draft PR already up and one interested developer willing to take a look already. 
  Library PR: https://github.com/libopenstorage/secrets/pull/80

I'm waiting to make sure that Rook's CI passes with the changes proposed before moving from "draft" PR to "ready" state.
  Rook CI: https://github.com/rook/rook/pull/13032

--- Additional comment from Blaine Gardner on 2023-10-11 22:11:20 UTC ---

PR waiting for backport to 4.14 here https://github.com/red-hat-storage/rook/pull/526.

4.13 and 4.12 should be using older versions of vault libs that are still under MPL-2.0

@etamir, need PM and QA acks to merge the Rook PR.

--- Additional comment from RHEL Program Management on 2023-10-12 03:44:23 UTC ---

This BZ is being approved for ODF 4.14.0 release, upon receipt of the 3 ACKs (PM,Devel,QA) for the release flag 'odf‑4.14.0

--- Additional comment from RHEL Program Management on 2023-10-12 03:44:23 UTC ---

Since this bug has been approved for ODF 4.14.0 release, through release flag 'odf-4.14.0+', the Target Release is being set to 'ODF 4.14.0

--- Additional comment from Eran Tamir on 2023-10-15 05:58:54 UTC ---

PM ack provided.

--- Additional comment from errata-xmlrpc on 2023-10-16 15:43:16 UTC ---

This bug has been added to advisory RHBA-2023:115514 by ceph-build service account (ceph-build.COM)

--- Additional comment from Blaine Gardner on 2023-10-16 16:40:08 UTC ---

I don't see any links to other BZs where ODF components need updating. Any component that uses Rook's API will need updated. Also, any component that uses libstorage/secrets directly will need updated. Those would be noobaa, ocs-operator, and odf-operator to my knowledge. There could be other components as well that I'm unaware of. Do those BZs exist already, but aren't linked here? Or do those need created?

Comment 7 Elena Bondarenko 2023-11-08 10:14:09 UTC
I checked the commit specified in the ocs operator image. The vault libraries listed in the go.mod file are

github.com/hashicorp/errwrap v1.1.0 // indirect 	
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect 	
github.com/hashicorp/go-multierror v1.1.1 // indirect 	
github.com/hashicorp/go-retryablehttp v0.7.4 // indirect 	
github.com/hashicorp/go-rootcerts v1.0.2 // indirect 	
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 // indirect 	
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect 	
github.com/hashicorp/go-sockaddr v1.0.5 // indirect 	
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect 	
github.com/hashicorp/vault/api v1.10.0 // indirect 	
github.com/hashicorp/vault/api/auth/approle v0.5.0 // indirect 	github.com/hashicorp/vault/api/auth/kubernetes v0.5.0 // indirect

They all have correct licenses, none of them is BSL.

Comment 9 errata-xmlrpc 2023-11-08 18:55:27 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Important: Red Hat OpenShift Data Foundation 4.14.0 security, enhancement & bug fix update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2023:6832


Note You need to log in before you can comment on or make changes to this bug.