Get info, set storage & delete an instance#

import lamindb as ln
πŸ”Ά You haven't yet setup an instance using the CLI: Please call `ln.setup.init()` or `ln.setup.load()`

Get info#

ln.setup.load("mydata")
πŸ’¬ Found cached instance metadata: /home/runner/.lamin/testuser1-instance-mydata.env
βœ… Loaded instance: testuser1/mydata
'migrate-unnecessary'
ln.setup.info()  # CLI: lamin info
Current user: testuser1
- handle: testuser1
- email: testuser1@lamin.ai
- id: DzTjkKse
Current instance: testuser1/mydata
- owner: testuser1
- name: mydata
- storage root: /home/runner/work/lndb/lndb/docs/guide/mydata_new_loc
- storage region: None
- db: sqlite:////home/runner/work/lndb/lndb/docs/guide/mydata_new_loc/mydata.lndb
- schema: set()

Set storage#

Hide code cell content
import laminci

pgurl = laminci.db.setup_local_test_postgres()
πŸ’¬ Created Postgres test instance: 'postgresql://postgres:pwd@0.0.0.0:5432/pgtest'
It runs in docker container 'pgtest'
ln.setup.init(storage="./storage_1", db=pgurl)
πŸ”Ά Instance metadata exists, but DB might have been corrupted or deleted. Re-initializing the DB.
πŸ’¬ Not registering instance on hub, if you want, call `lamin register`
πŸ’¬ Loading schema modules: core==0.34.0 
βœ… Loaded instance: testuser1/pgtest
βœ… Created & loaded instance: testuser1/pgtest

Local storage:

ln.setup.set.storage("./storage_2")  # CLI: lamin set --storage ./storage_2
βœ… Set storage ./storage_2
Hide code cell content
from pathlib import Path

assert ln.setup.settings.storage.root_as_str == f"{Path.cwd()}/storage_2"

Cloud storage:

ln.setup.set.storage("s3://lndb-setup-ci")  # lamin set --storage s3://lndb-setup-ci
βœ… Set storage s3://lndb-setup-ci

See an overview:

ln.select(ln.Storage).df()
root type region created_at updated_at created_by_id
id
CptR36rQ /home/runner/work/lndb/lndb/docs/guide/storage_1 local None 2023-05-30 15:20:10.544066 None None
WPjTUnoA /home/runner/work/lndb/lndb/docs/guide/storage_2 local None 2023-05-30 15:20:10.598843 None None
Py0joCVn s3://lndb-setup-ci s3 None 2023-05-30 15:20:10.640329 None None
Hide code cell content
assert ln.setup.settings.storage.is_cloud
assert ln.setup.settings.storage.root_as_str == "s3://lndb-setup-ci"
# root.fs contains the underlying fsspec filesystem
assert (
    ln.setup.settings.storage.root.fs.cache_regions  # set by lamindb to True for s3 by default
)

You can set any additional fsspec filesystem arguments for cloud storage, such as profile or cache_regions (for s3 only), for example:

ln.setup.set.storage("s3://lndb-setup-ci", cache_regions=False)
βœ… Set storage s3://lndb-setup-ci
Hide code cell content
# test cache_regions
assert not ln.setup.settings.storage.root.fs.cache_regions
# test setting storage not by owner
ln.setup.login(
    "testuser2@lamin.ai", password="goeoNJKE61ygbz1vhaCVynGERaRrlviPBVQsjkhz"
)
ln.setup.set.storage("./storage_3")
assert ln.setup.settings.storage.root_as_str == f"{Path.cwd()}/storage_3"
!docker stop pgtest && docker rm pgtest
βœ… Logged in with handle testuser2 and id bKeW4T6E
βœ… Set storage ./storage_3
pgtest
pgtest

Currently not possible: setting storage for SQLite instance#

ln.setup.login("testuser1")
ln.setup.load("mydata")
βœ… Logged in with email testuser1@lamin.ai and id DzTjkKse
πŸ”Ά Connection postgresql://postgres:pwd@0.0.0.0:5432/pgtest not reachable
πŸ’¬ Consider closing the instance: `lamin close`
πŸ’¬ Found cached instance metadata: /home/runner/.lamin/testuser1-instance-mydata.env
βœ… Loaded instance: testuser1/mydata
'migrate-unnecessary'

If you try to set the storage for an sqlite instance, an error message is returned:

assert ln.setup.set.storage("mydata_storage_2") == "set-storage-failed"
❌ Can't set storage for sqlite instances.

Delete an instance#

With local default storage#

ln.setup.init(storage="mydata-delete")
πŸ’¬ Not registering instance on hub, if you want, call `lamin register`
πŸ’¬ Loading schema modules: core==0.34.0 
βœ… Loaded instance: testuser1/mydata-delete
βœ… Created & loaded instance: testuser1/mydata-delete
ln.setup.delete("mydata-delete")  # CLI: lamin delete mydata
πŸ’¬ Deleting instance testuser1/mydata-delete
πŸ’¬     instance settings '.env' deleted
πŸ’¬     current instance settings /home/runner/.lamin/current_instance.env deleted
πŸ’¬     consider deleting your stored data manually: /home/runner/work/lndb/lndb/docs/guide/mydata-delete
πŸ’¬     deleted '.lndb' sqlite file
Hide code cell content
from lndb.dev._settings_store import instance_settings_file

settings_file = instance_settings_file("mydata-delete", "testuser1")
assert settings_file.exists() == False

With remote default storage#

ln.setup.init(storage="s3://lndb-setup-delete-ci")
2023-05-30 15:20:17,163:INFO - Found credentials in environment variables.
πŸ”Ά SQLite file s3://lndb-setup-delete-ci/lndb-setup-delete-ci.lndb does not exist
πŸ”Ά Instance metadata exists, but DB might have been corrupted or deleted. Re-initializing the DB.
2023-05-30 15:20:19,284:INFO - Found credentials in environment variables.
βœ… Registered instance on hub: https://lamin.ai/testuser1/None
πŸ’¬ Loading schema modules: core==0.34.0 
βœ… Loaded instance: testuser1/lndb-setup-delete-ci
βœ… Created & loaded instance: testuser1/lndb-setup-delete-ci
ln.setup.delete("lndb-setup-delete-ci")
πŸ’¬ Deleting instance testuser1/lndb-setup-delete-ci
πŸ’¬     instance settings '.env' deleted
πŸ’¬     current instance settings /home/runner/.lamin/current_instance.env deleted
πŸ’¬     instance cache deleted
πŸ’¬     consider deleting your stored data manually: s3://lndb-setup-delete-ci/
πŸ’¬     deleted '.lndb' sqlite file
πŸ’¬     please manually delete your remote instance on lamin.ai