# | KCL core lib schema contracts
# | Migrated from: provisioning/kcl/lib.k
# | Pattern: Schema definitions only

{
  StorageVol = {
    name | String,
    size | Number,
    total | Number,
    type | String,
    mount | Bool,
    mount_path | String | optional,
    fstab | Bool,
  },

  Storage = {
    name | String,
    size | Number,
    total | Number,
    type | String,
    mount | Bool,
    mount_path | String | optional,
    fstab | Bool,
    parts,
  },

  TaskServDef = {
    name | String,
    install_mode | String | default = "library",
    profile | String | default = "default",
    target_save_path | String | default = "",
  },

  ClusterDef = {
    name | String,
    profile | String | default = "default",
    target_save_path | String | default = "",
  },

  ScaleData = {
    def | String,
    disabled | Bool,
    mode | String,
    expire | Dyn | optional,
    from | Dyn | optional,
    to | Dyn | optional,
  },

  ScaleResource = {
    default,
    fallback | Dyn | optional,
    up | Dyn | optional,
    down | Dyn | optional,
    min | Dyn | optional,
    max | Dyn | optional,
    path | String,
  },
}
