29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
# Skyforge
|
|
|
|
## Brief
|
|
|
|
Skyforge was designed to assist in render thousands of device configurations across the globe.
|
|
|
|
## Assumptions
|
|
|
|
- Partitions are groups of regions
|
|
- Regions are groups of zones
|
|
- Zones are groups of devices
|
|
- Layers are groups of common devices and facilitate template mapping
|
|
|
|
## Functionality
|
|
|
|
Skyforge takes a user provide regex pattern, performs a walk on a `./spec` dir, and matches a list of devices specifications that do not have the word "common" in their path.
|
|
All group files are labeled with common and mappable from the file itself.
|
|
|
|
For each file_path matched, Skyforge then maps to all consituent files:
|
|
|
|
- Layer - from by the common file in parent dir and maps the region
|
|
- Zonal - from the first group of chars in filename up to a `-` (region_id + zone_id)
|
|
- Regional - from the region_id of containing folder
|
|
- Partitional - from either layer (common.yaml) or regional yaml
|
|
|
|
Once all files are found, a compiled_specifcation is built.
|
|
This spec is then passed to Tera as context.
|
|
Tera then loads the template files for that layer and renders the configuration file.
|