Hierarchy
Device Classes are located in a special directory
in our Git repository. This directory is embedded into the Thola binary using go embed
.
This allows Thola having access to the information provided by the device classes without
needing the device class directory as an additional dependency.
The device class directory is structured in a hierarchy which represents the relations between device classes. A device class can inherit information from another device class. This inheritance is automatically done by Thola depending on the location of the YAML file inside the directory. When defining a sub class for an already existing device class, the YAML file of this sub class needs to be located in a directory which is located in the same directory as the YAML file of the parent device class and has the name of that parent class.
The following example shows a small part of the device class hierarchy:
├── generic
│.. ├── adva_fsp3kr7.yaml
│...├── arista_eos.yaml
│.. ├── audiocodes.yaml
│.. ├── aviat.yaml
│.. ├── ceraos
│.. │.. └── ip10.yaml
│.. ├── ceraos.yaml
│.. ├── clavister.yaml
│ ...
│
└── generic.yaml
At the top level, there are only two files. The YAML file generic.yaml
defines the
behavior for the generic device class. All other device classes, which inherit from
this class, are located in the generic
directory.
This directory contains various YAML files, which all represent a device class,
and additional directories, which introduce a new level in the inheritance hierarchy.
For instance, the YAML file located at generic/ceraos/ip10.yaml
defines a device class
for Ceragon IP-10 devices. This device class inherits from the ceraos
device class,
which is defined at generic/ceraos.yaml
. This device class again inherits from generic
.
Every device class in Thola inherits from generic
. Therefore, when creating a new device class, it has to
be created inside the generic
directory.