123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/python3
- import json
- import os
- import sys
- # Used to migrate storage format to include ACLs
- def storage_migrate(storage):
- delete_keys = []
- if storage['type'] == 'hostPath':
- # Check if the key exists, if not we have already migrated
- if not storage.get('hostPath'):
- return storage
- storage['hostPathConfig'] = {'hostPath': storage['hostPath']}
- delete_keys.append('hostPath')
- if storage['type'] == 'ixVolume':
- # Check if the key exists, if not we have already migrated
- if not storage.get('datasetName'):
- return storage
- storage['ixVolumeConfig'] = {'datasetName': storage['datasetName']}
- delete_keys.append('datasetName')
- for key in delete_keys:
- del storage[key]
- return storage
- # Used to migrate libraries to additionalStorages
- def libraries_migrate(libraries):
- # Additional **Libraries** only had a field for hostPath, because Immich
- # had a requirement for both hostPath and mountPath to be the same,
- # now its no longer the case, so we can merge it with additionalStorages
- for idx, library in enumerate(libraries):
- libraries[idx] = {
- 'type': 'hostPath',
- 'mountPath': library['hostPath'],
- 'hostPathConfig': {
- 'hostPath': library['hostPath'],
- }
- }
- return libraries
- def migrate(values):
- storage_key = 'immichStorage'
- storages = ['uploads', 'library', 'thumbs', 'profile', 'video', 'pgData', 'pgBackup']
- for storage in storages:
- values[storage_key][storage] = storage_migrate(values[storage_key][storage])
- # Migrate additionalLibraries,
- # if additionalLibraries does not exist, we have already migrated
- if libraries := values[storage_key].get('additionalLibraries', None):
- # If additionalLibraries exists, additionalStorages does not exist yet
- values[storage_key]['additionalStorages'] = libraries_migrate(libraries)
- del values[storage_key]['additionalLibraries']
- return values
- if __name__ == '__main__':
- if len(sys.argv) != 2:
- exit(1)
- if os.path.exists(sys.argv[1]):
- with open(sys.argv[1], 'r') as f:
- print(json.dumps(migrate(json.loads(f.read()))))
|