init commit
This commit is contained in:
28
README.md
Normal file
28
README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user