folio_uuid
A python module for creating deterministic UUIDs (UUID v5) outside of FOLIO when migrating data.
Installation
The module is uploaded to pypi. Just do
pip install folio-uuid
or
pipenv install folio-uuid
Overview
The UUIDs (v5) are contstructed in the following way:
- The namespace is the same for all "Folio UUIDs": 8405ae4d-b315-42e1-918a-d1919900cf3f
- The name is contstructed by the following parts, delimited by a colon (:)
- OKAPI_URL This should be the full OKAPI Url including https. Example: https://okapi-bugfest-juniper.folio.ebsco.com
- OBJECT_TYPE_NAME This should be the name of the type of object that the ID is generated for. In plural. the file folio_namespaces.py in this repo has a complete list of the ones currently in use. Example: items
- LEGACY_IDENTIFIER This should be the legacy identifier comming from the source system. The library will perform some normalization* of the identifier if it is a Sierra/Millennium identifier. Example: i3696836
* The normalization strips away any dots (.), check digits and campus codes from the identifiers
Tests/Examples
Bash/linux example
uuidgen --sha1 -n 8405ae4d-b315-42e1-918a-d1919900cf3f -N https://okapi-bugfest-juniper.folio.ebsco.com:items:i3696836
To install uuidgen on a apt-enabled Linux distribution, use
sudo apt-get install uuid-runtime
Python Example
def test_deterministic_uuid_generation_holdings():
deterministic_uuid = FolioUUID(
"https://okapi-bugfest-juniper.folio.ebsco.com",
FOLIONamespaces.holdings,
"000000167",
)
assert "a0b4c8a2-01fd-50fd-8158-81bd551412a0" == str(deterministic_uuid)
References
Wikipedia has an article on UUID version 5
There are many browser-based tools to create singe UUIDs v5. UUIDTools is one of them.