What's New in Skaha¶
Stay up to date with the latest features, improvements, and changes in Skaha.
Recent Updates¶
New in v1.7+
๐ Enhanced Authentication System¶
Skaha now features a comprehensive authentication system with support for multiple authentication modes and automatic credential management.
from skaha.client import SkahaClient
from pathlib import Path
# X.509 certificate authentication
client = SkahaClient(certificate=Path("/path/to/cert.pem"))
# OIDC token authentication (configured)
client = SkahaClient() # Uses auth.mode = "oidc"
# Bearer token authentication
from pydantic import SecretStr
client = SkahaClient(token=SecretStr("your-token"))
๐ Asynchronous Sessions¶
Skaha now supports asynchronous sessions using the AsyncSession
class while maintaining 1-to-1 compatibility with the Session
class.
from skaha.session import AsyncSession
asession = AsyncSession()
response = await asession.create(
name="test",
image="images.canfar.net/skaha/base-notebook:latest",
cores=2,
ram=8,
gpu=1,
kind="headless",
cmd="env",
env={"KEY": "VALUE"},
replicas=3,
)
๐๏ธ Backend Upgrades¶
- ๐ก Skaha now uses the
httpx
library for making HTTP requests instead ofrequests
. This adds asynchronous support and also to circumvent therequests
dependence onurllib3
which was causing SSL issues on MacOS. See this issue for more details. - ๐ Skaha now supports multiple authentication methods including X.509 certificates, OIDC tokens, and bearer tokens with automatic SSL context management.
- ๐๏ธ๐จ Added
loglevel
andconcurrency
support to manage the new explosion in functionality! - ๐ Comprehensive debug logging for authentication flow and client creation troubleshooting.
๐งพ Logs to stdout
¶
The [Session|AsyncSession].logs
method now prints colored output to stdout
instead of returning them as a string with verbose=True
flag.
from skaha.session import AsyncSession
asession = AsyncSession()
await asession.logs(ids=["some-uuid"], verbose=True)
๐ชฐ Firefly Support¶
Skaha now supports launching firefly
session on the CANFAR Science Platform.
New in v1.4+
๐ Private Images¶
Starting October 2024, to create a session with a private container image from the CANFAR Harbor Registry, you will need to provide your harbor username
and the CLI Secret
through a ContainerRegistry
object.
from skaha.models import ContainerRegistry
from skaha.session import Session
registry = ContainerRegistry(username="username", secret="sUp3rS3cr3t")
session = Session(registry=registry)
Alternatively, if you have environment variables, SKAHA_REGISTRY_USERNAME
and SKAHA_REGISTRY_SECRET
, you can create a ContainerRegistry
object without providing the username
and secret
.
from skaha.models import ContainerRegistry
registry = ContainerRegistry()
๐ฃ Destroy Sessions¶
Previous Versions¶
For a complete history of changes, see the Changelog.
Stay Updated¶
- ๐ข GitHub Releases
- ๐ Changelog
- ๐ฌ Discussions