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

Multiple PID provider support #10234

Merged

Conversation

qqmyers
Copy link
Member

@qqmyers qqmyers commented Jan 12, 2024

What this PR does / why we need it: Continues the refactoring of the PID Providers to now support

  • instantiating multiple providers, of the same or different types (DataCite, EZId, Handle, Fake, PermaLink), with associated protocol, authority, shoulder, separator (for Perma)
  • per provider lists of additional PIDs that are managed by or excluded from the set defined by the auth/separator/shoulder
  • basic support for adding additional PidProvider types (classes not yet separated into the SPI)
  • per collection setting of the PidProvider to use for new PIDs (datasets, or files created in an existing dataset when it is not possible to create additional PIDs with the dataset's protocol/authority/separator/shoulder)
  • api calls to get provider info and see what provider a dataset will use to mint datafile pids, and superuser calls to set the dataset pid generator.

Which issue(s) this PR closes:

Closes #3623

Special notes for your reviewer: See explanatory doc.

I've gone ahead with a partial refactoring of the DataCite Provider, removing the old cache class, etc. There's still more that could be done, but I think that's better for future PRs.

I've also tweaked the installer to use the fake provider rather than putting in 10.5072 as an authority and default DataCite username/passwords and then swapping to use :DoiProvider=FAKE at a later step (i.e. for the Jenkins build). The docs are in synch and the installer text as well.

Suggestions on how to test this: The IT tests should handle legacy config and single provider cases. The unit tests check the basic logic of working with multiple providers. The main area to test would be in configuring multiple providers via microprofile and testing relevant scenarios, e.g. using a test DataCite provider and a PermaLink provider, etc.

There's also a semi-automated test of the DataCite provider. See the DataCiteProviderTest class - you basically have to export username/password/authority/shoulder for a valid DataCite test account and then run the test - it will go though creating, updating, publishing, deaccessioning the DOI at DataCite (leaving one non-deletable DOI in the 'register' state in your account).

Does this PR introduce a user interface change? If mockups are available, please link/include them here:

Is there a release notes update needed for this change?: yes

Additional documentation: included

@qqmyers
Copy link
Member Author

qqmyers commented Mar 4, 2024

@stevenwinship - try that. The basic issue is that Dataverse will refuse to launch if a valid pid provider isn't set up using the new microprofile/jvm options. I've added those to the docker/composer.yml file, which I hope is what's used for the docker launch. If so, hopefully this clears your error. If not, we'll need to find the right place to add these settings.

@pdurbin
Copy link
Member

pdurbin commented Mar 4, 2024

There's also docker-compose-dev.yml in the root of the repo. Pick your poison. 😄

@qqmyers
Copy link
Member Author

qqmyers commented Mar 4, 2024

OK - I've added there too - thanks.

@stevenwinship stevenwinship self-assigned this Mar 5, 2024
qqmyers and others added 2 commits March 5, 2024 09:26
Co-authored-by: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
Co-authored-by: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
@qqmyers
Copy link
Member Author

qqmyers commented Mar 5, 2024

Sorry for the typos!

@stevenwinship
Copy link
Contributor

stevenwinship commented Mar 5, 2024

Stack trace when logged in as admin and create dataset. This is out-of-the-box with no other configurations running in docker:

stacktrace.txt

Adding -Ddataverse.pid.default-provider=fake fixes this issue

@stevenwinship
Copy link
Contributor

QA testing completed. Once the -Ddataverse.pid.default-provider=fake is added this PR is good to merge

qqmyers and others added 2 commits March 5, 2024 22:16
Co-authored-by: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
Co-authored-by: Steven Winship <39765413+stevenwinship@users.noreply.github.com>
@stevenwinship stevenwinship merged commit 44ce6a1 into IQSS:develop Mar 6, 2024
12 checks passed
@stevenwinship stevenwinship removed their assignment Mar 6, 2024
@pdurbin pdurbin added this to the 6.2 milestone Mar 6, 2024
pdurbin added a commit to IQSS/dataverse-frontend that referenced this pull request Mar 6, 2024
We need new PID settings now that
IQSS/dataverse#10234
has been merged.

Upstream we add them as JVM_ARGS so let's use
the same format.

We can perhaps switch to MPCONFIG-only once we're
sure it works fine.
@pdurbin pdurbin changed the title IQSS/3623 - Multiple PID Provider support Multiple PID provider support Mar 15, 2024
jayanthkomarraju pushed a commit to jayanthkomarraju/dataverse-frontend that referenced this pull request May 31, 2024
We need new PID settings now that
IQSS/dataverse#10234
has been merged.

Upstream we add them as JVM_ARGS so let's use
the same format.

We can perhaps switch to MPCONFIG-only once we're
sure it works fine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NIH OTA: 2.2.3 Support multiple DataCite providers Size: 30 A percentage of a sprint. 21 hours. (formerly size:33)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support flexible option for DOI and Handle registration, in same installation
6 participants