# Logger configuration
logging:
  type: syslog|silent|base <type of logger to be used by the system. silent = no logger, base = file based logger. Default - syslog>
  level: log_off|log_crit|log_err|log_warning|log_info|log_trace|log_debug <log level. Default - log_warning> <log_debug will also enable sdk-trace logs>
  file-path: <path where log files shall be stored. Default - '$HOME/.blobfuse2/blobfuse2.log'>

# Pipeline configuration. Choose components to be engaged. The order below is the priority order that needs to be followed.
components:
  - libfuse
  - xload
  - block_cache
  - file_cache
  - attr_cache
  - azstorage

# Xload configuration 
xload:
  path: <path to local disk cache where downloaded files will be stored>
  export-progress: <preload progress will be exported to a json fil. Default output file is '~/.blobfuse2/xload_stats_{PID}.json'. Default - not exported> 
  validate-md5: <if md5 sum is present in the blob, validate it post download. Default - false>

# Block cache related configuration
block_cache:
  block-size-mb: <size of each block to be cached in memory (in MB). Default - 16 MB>
  mem-size-mb: <total amount of memory to be preallocated for block cache (in MB). Default - 80% of free memory>
  path: <path to local disk cache where downloaded blocks will be stored>
  disk-size-mb: <maximum disk cache size allowed. Default - 80% of free disk space>
  disk-timeout-sec: <default disk cache eviction timeout (in sec). Default - 120 sec>
  prefetch: <number of blocks to be prefetched in serial read case. Min - 11, Default - 2 times number of CPU cores>
  parallelism: <number of parallel threads downloading the data and writing to disk cache. Default - 3 times number of CPU cores> 

# Disk cache related configuration
file_cache:
  # Required
  path: <path to local disk cache>
  # Optional 
  timeout-sec: <default cache eviction timeout (in sec). Default - 120 sec>
  max-size-mb: <maximum cache size allowed. Default - 80% of free disk space>
  
# Azure storage configuration
azstorage:
# Required
  type: block|adls <type of storage account to be connected. Default - block>
  account-name: <name of the storage account>
  container: <name of the storage container to be mounted>
  endpoint: <specify this parameter only if storage account is behind a private endpoint>
  mode: key|sas|spn|msi|azcli <kind of authentication to be used>
  account-key: <storage account key>
  # OR
  sas: <storage account sas>
  # OR
  appid: <storage account app id / client id for MSI>
  resid: <storage account resource id for MSI>
  objid: <object id for MSI - needs Azure CLI on system>
  # OR
  tenantid: <storage account tenant id for SPN>
  clientid: <storage account client id for SPN>
  clientsecret: <storage account client secret for SPN>
  oauth-token-path: <path to file containing the OAuth token>
  workload-identity-token: <service account token for workload identity>
