Configuration directives

Overview

The Arcapix Management REST API is controlled by various configuration directives. These are represented in a filesystem heirarchy, and manifest themselves as dot seperated properties. The content of the actual property values is JSON formatted. More complex properties (e.g. dicts/maps) are also used for some properties.

Important

It is especially important to note that raw strings are NOT valid JSON, therefore all string values must be appropriately quoted

The base location for ArcaPix configuration values is /opt/arcapix/etc (see below). Thus, to set the value of arcapix.auth.server.url to https://localhost/ one would write a file containing precisely

"https://localhost/"

into /opt/arcapix/etc/arcapix/auth/server/url

Location

The default location for configuration values is /opt/arcapix/etc/. However, this can be overridden by setting the ARCAPIX_CONFIG environment variable to point to a suitable directory - this may be useful for example to centralise configuration values.

Defaults

The system does not have any “default” values - all configuration values must be explictly set.

Using Python to write the config values

One of the most convenient methods for setting configuration values is to use the supplied python library.

from arcapix.config import config
config["arcapix.auth.server.url"] = "https://localhost"

Configuration properties

The following properties are currently defined for search.

Note

there may be other properties present in the /opt/arcapix/etc/ heirarchy - these are for other arcapix products not connected with the management API

arcapix.auth.server.url

This value defines the server which the search server can use to verify access tokens. This server _should_ use https: rather than http:, but this is not mandated.

Type String
Suggested default value

https://localhost

(This url will have /oauth2/token_info appended to it automatically.)

arcapix.infrastructure.scheduler.engine

The job engine class to use for asynchronous task execution. Should be the class name of the engine, including the fully-qualified name of the module in which it is defined.

Type String
Suggested default value “arcapix.infrastructure.scheduler.condor.CondorEngine”

arcapix.infrastructure.scheduler.condor.prep_time

In HTCondor, deferral prep time is a period of time (in seconds) before a job is scheduled to run during which the job can claim a job slot. If not set, the job will grab a slot as soon as one is available. This can be a problem if the number of job slots is limited, as a job could claim a slot and sit idle, whilst blocking other jobs from running.

Setting a deferral prep time will prevent this.

However, if a job doesn’t match during this window – for example, if the window is too short – the job will be placed on hold. If that happens, you will have to manually ‘release’ the job for it to run.

This is especially a problem for the database reconcile job. If it’s placed on hold, the database won’t be kept up to date with the state of the filesystem.

Type Integer
Suggested default value 30

arcapix.infrastructure.scheduler.condor.window

Similar to deferral prep time, you could set a value for a deferral window. Deferral window is a period of time after the job is scheduled to run during which it can still claim a slot.

If not set, and the job has a deferral prep time, the job will be placed on hold if it misses its scheduled run time. Setting this value gives the job a chance to claim a slot even if it misses it’s exact deferral time.

Whether you should use this depends on how important it is for the job to run at a particular time.

Type Integer
Suggested default value 0

arcapix.management.database.path

Absolute path to the management SQL database file

Type String
Suggested default value “/mmfs1/.arcapix/apmgmt.db”

arcapix.management.database.reconcile.every

The frequency at which database reconcile runs, in seconds.

When the REST server is started, a database reconcile job is put in the job engine. This job makes sure the database stays in sync with the state of the filesystem.

Note - if you change this config, you will need to restart the REST server for the change to take effect.

Type Integer
Suggested default value

300

(every 5 minutes)

arcapix.management.filesets.allocinodes

The default number of inodes to allocate to new independent filesets

You can specify the number of inodes to allocate to an independent fileset (space) by specifying extras['gpfs.fileset.allocinodes'] when creating a space.

If that isn’t specified, then the value of this config will be used as the default.

Type Integer
Suggested default value 10000

arcapix.management.filesets.maxinodes

The default maximum number of inodes to set for new independent filesets

You can specify the max number of inodes for an independent fileset (space) by specifying extras['gpfs.fileset.maxinodes'] when creating a space.

If that isn’t specified, then the value of this config will be used as the default.

Type Integer
Suggested default value 20000

arcapix.management.filesets.exclude

List of names of filesets that should be excluded from being ingested

Type List of strings
Suggested default value [‘root’]

arcapix.management.filesystems.exclude

List of names of filesystems that should be excluded from being ingested

Type List of strings
Suggested default value [‘apfs’]

arcapix.management.templates.store

Fully qualified path to a directory, in which templates will be stored.

Type String
Suggested default value “/mmfs1/.arcapix/templates”

arcapix.scheduler.logs.path

The location where asynchonous jobs write their log output. Sub-directories will be created to ensure that no one directory is overloaded.

Type String
Suggested default value “/mmfs1/logs”

executables.csync2

Absolute path to the csync2 executable. csync2 is used to synchronise nfs and smb configuration files across the cluster

Type String
Suggested default value “/usr/sbin/csync2”

shares.nfs

Absolute path to the (local) filesystem’s nfs configuration file. This will be synced across the cluster using csync2

Type String
Suggested default value “/etc/exports”

shares.smb

Absolute path to the (local) filesystem’s smb configuration file. This will be synced across the cluster using csync2

Type String
Suggested default value “/etc/samba/smb.conf”