Workspace Configuration
Workspace configuration manages settings that apply across your entire DASL workspace. This includes system table locations, default SQL warehouses, export configurations, and other workspace-wide preferences.
Overview
Workspace configuration controls:
System tables: Where DASL stores metadata and operational data
Default SQL warehouse: Default compute for queries
Export settings: How to send notables and alerts to external systems
Storage paths: Where DASL stores internal files and custom presets
Detection settings: Default schedules and categories for rules
Getting Configuration
Retrieve the current workspace configuration:
from dasl_client import Client
client = Client.for_workspace()
# Get current configuration
config = client.get_config()
print(f"System catalog: {config.system_tables_config.catalog_name}")
print(f"System schema: {config.system_tables_config.var_schema}")
print(f"Default warehouse: {config.default_sql_warehouse}")
print(f"Storage path: {config.dasl_storage_path}")
Understanding Configuration Structure
The WorkspaceConfig has a flat structure with these main components:
from dasl_client import WorkspaceConfig, SystemTablesConfig
# Example configuration structure
config = WorkspaceConfig(
system_tables_config=SystemTablesConfig(
catalog_name="dasl_system",
var_schema="metadata"
),
default_sql_warehouse="my-warehouse-id",
dasl_storage_path="/Volumes/catalog/schema/volume",
dasl_custom_presets_path="/Volumes/catalog/schema/presets"
)
Storage Configuration
Configure where DASL stores internal files and custom presets:
# Configure storage paths
config.dasl_storage_path = "/Volumes/my_catalog/my_schema/dasl_storage"
config.dasl_custom_presets_path = "/Volumes/my_catalog/my_schema/custom_presets"
Detection Rule Configuration
Configure default settings for detection rules:
from dasl_client import DetectionRuleMetadata, Schedule
# Configure detection categories
config.detection_rule_metadata = DetectionRuleMetadata(
detection_categories=[
"Authentication",
"Network Activity",
"Data Access",
"System Events",
"Compliance"
]
)
# Set default rule schedule (must be a Schedule object, not a string)
config.default_rule_schedule = Schedule(
at_least_every="1h", # Rules run hourly by default
enabled=True
)
Updating Configuration
Modify workspace settings:
# Get current config
config = client.get_config()
# Update storage path
config.dasl_storage_path = "/Volumes/new_catalog/new_schema/dasl_storage"
# Update default rule schedule (must be a Schedule object)
config.default_rule_schedule = Schedule(
at_least_every="30m", # More frequent
enabled=True
)
# Apply changes
client.put_config(config)
print("Configuration updated successfully")
Custom Notebook Configuration
Configure storage for custom user notebooks:
# Set custom notebook location. This is the location where custom notebooks
# will be stored such as those created for custom functions executed by a datasource.
config.default_custom_notebook_location = "/Volumes/catalog/schema/volume/notebooks"
Datasource-Specific Configuration
Configure default settings for datasources:
from dasl_client import DatasourcesConfig
# Configure datasource defaults
config.datasources = DatasourcesConfig(
catalog_name="my_catalog",
bronze_schema="bronze",
silver_schema="silver",
gold_schema="gold",
checkpoint_location="/Volumes/my_catalog/my_schema/checkpoints",
default_compute_mode="automatic"
)
Rules-Specific Configuration
Configure default settings for rules:
from dasl_client import RulesConfig
# Configure rule defaults
config.rules = RulesConfig(
checkpoint_location="/Volumes/my_catalog/my_schema/rule_checkpoints"
)
Error Handling
Handle configuration errors properly:
from dasl_client.errors import BadRequestError, ConflictError
try:
updated_config = client.put_config(config)
except BadRequestError as e:
print(f"Configuration is invalid: {e}")
# Check required fields and valid values
except ConflictError as e:
print(f"Configuration conflict: {e}")
# Another update may have occurred
Next Steps
Datasources: Datasources to configure data ingestion
Rules: Rules to set up detection logic
API reference: Client for detailed configuration methods