65 lines
2.8 KiB
Plaintext
Raw Permalink Normal View History

# | Core lib instances (defaults only)
# | Migrated from: provisioning/kcl/lib.k
# | Pattern: Hybrid - defaults + makers + direct access (contracts available via import)
let contracts_lib = import "./contracts.ncl" in
let defaults_lib = import "./defaults.ncl" in
{
# ============================================================================
# SECTION 0: Contracts (schema definitions)
# Use when: Validating and type-checking records
# Exported: YES - for contract application via `| contracts.Storage`
# ============================================================================
Storage = contracts_lib.Storage,
StorageVol = contracts_lib.StorageVol,
TaskServDef = contracts_lib.TaskServDef,
ClusterDef = contracts_lib.ClusterDef,
ScaleData = contracts_lib.ScaleData,
ScaleResource = contracts_lib.ScaleResource,
# ============================================================================
# SECTION 1: Direct access to defaults (for reference)
# Use when: Understanding default values, building custom instances manually
# Exported: YES - for inspection and custom building
# ============================================================================
defaults = defaults_lib,
# ============================================================================
# SECTION 2: Convenience makers (90% of use cases)
# Use when: Creating instances with overrides, simple customization
# Note: Not exported to TOML/JSON (functions aren't serializable)
# Import lib.ncl in Nickel code and use these functions
# ============================================================================
make_storage_vol | not_exported = fun overrides =>
defaults_lib.storage_vol & overrides,
make_storage | not_exported = fun overrides =>
defaults_lib.storage & overrides,
make_taskserv_def | not_exported = fun overrides =>
defaults_lib.taskserv_def & overrides,
make_cluster_def | not_exported = fun overrides =>
defaults_lib.cluster_def & overrides,
make_scale_data | not_exported = fun overrides =>
defaults_lib.scale_data & overrides,
make_scale_resource | not_exported = fun overrides =>
defaults_lib.scale_resource & overrides,
# ============================================================================
# SECTION 3: Default instances (bare defaults)
# Use when: Need unmodified default values
# Exported: YES - for direct use without customization
# ============================================================================
DefaultStorageVol = defaults_lib.storage_vol,
DefaultStorage = defaults_lib.storage,
DefaultTaskServDef = defaults_lib.taskserv_def,
DefaultClusterDef = defaults_lib.cluster_def,
DefaultScaleData = defaults_lib.scale_data,
DefaultScaleResource = defaults_lib.scale_resource,
}