feat(rack): populate rack01 and wire gen_rack into make targets
Add rack placement frontmatter to mf00–mf04, fix pre-existing schema error in docs/services/coursemanagement.md (missing kind/name fields), extend Makefile docs-index and docs-check targets to also run gen_rack, add test target, generate rack01.md and rack01-elevation.svg. Positions are provisional placeholders to prove the pipeline; correct when mounting. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
039b1212b9
commit
15666e0470
9 changed files with 208 additions and 4 deletions
10
Makefile
10
Makefile
|
|
@ -1,4 +1,4 @@
|
|||
.PHONY: help docs-index docs-build docs-serve docs-check slides
|
||||
.PHONY: help docs-index docs-build docs-serve docs-check slides test
|
||||
|
||||
help:
|
||||
@echo "Targets:"
|
||||
|
|
@ -7,10 +7,12 @@ help:
|
|||
@echo " docs-serve Run a live-reload local preview server"
|
||||
@echo " docs-check Drift-check: regenerate indices, fail if they differ from the committed copies"
|
||||
@echo " slides Run build-slides.sh (Marp slides)"
|
||||
@echo " test Run the Python unit tests (pytest)"
|
||||
|
||||
docs-index:
|
||||
python3 scripts/gen_overview.py --category hardware
|
||||
python3 scripts/gen_overview.py --category services
|
||||
python3 scripts/gen_rack.py
|
||||
|
||||
docs-build:
|
||||
mkdocs build --strict
|
||||
|
|
@ -21,7 +23,11 @@ docs-serve:
|
|||
docs-check:
|
||||
python3 scripts/gen_overview.py --category hardware
|
||||
python3 scripts/gen_overview.py --category services
|
||||
git diff --exit-code docs/hardware/index.md docs/services/index.md
|
||||
python3 scripts/gen_rack.py
|
||||
git diff --exit-code docs/hardware/index.md docs/services/index.md docs/infrastructure/racks/
|
||||
|
||||
slides:
|
||||
./build-slides.sh
|
||||
|
||||
test:
|
||||
pytest -q
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ cpu_threads: "?"
|
|||
ram_gb: "?"
|
||||
storage: "?"
|
||||
nic_gbps: "?"
|
||||
rack: rack01
|
||||
rack_u: 1
|
||||
u_height: 1
|
||||
rack_face: front
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@ ram_type: DDR4-2666 non-ECC UDIMM
|
|||
storage_gb: 40
|
||||
storage_type: nvme
|
||||
nic_gbps: 1
|
||||
rack: rack01
|
||||
rack_u: 2
|
||||
u_height: 1
|
||||
rack_face: front
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@ ram_type: DDR4-2666 non-ECC UDIMM
|
|||
storage_gb: 40
|
||||
storage_type: nvme
|
||||
nic_gbps: 1
|
||||
rack: rack01
|
||||
rack_u: 3
|
||||
u_height: 1
|
||||
rack_face: front
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@ ram_gb: 8
|
|||
storage_gb: 500
|
||||
storage_type: hdd
|
||||
nic_gbps: 1
|
||||
rack: rack01
|
||||
rack_u: 5
|
||||
u_height: 2
|
||||
rack_face: front
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@ ram_gb: 8
|
|||
storage_gb: 500
|
||||
storage_type: hdd
|
||||
nic_gbps: 1
|
||||
rack: rack01
|
||||
rack_u: 5
|
||||
u_height: 2
|
||||
rack_face: rear
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
|
|
|||
160
docs/infrastructure/racks/rack01-elevation.svg
Normal file
160
docs/infrastructure/racks/rack01-elevation.svg
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="584" height="1012" viewBox="0 0 584 1012" font-family="sans-serif" font-size="11">
|
||||
<rect width="584" height="1012" fill="#ffffff"/>
|
||||
<text x="12" y="28" font-size="16" font-weight="bold">Rack rack01</text>
|
||||
<text x="162" y="34" text-anchor="middle" font-weight="bold">front</text>
|
||||
<rect x="42" y="40" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="60" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="80" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="100" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="120" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="140" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="160" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="180" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="200" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="220" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="240" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="260" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="280" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="300" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="320" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="340" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="360" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="380" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="400" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="420" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="440" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="460" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="480" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="500" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="520" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="540" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="560" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="580" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="600" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="620" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="640" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="660" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="680" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="700" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="720" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="740" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="760" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="780" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="800" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="820" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="840" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="860" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="880" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="900" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="920" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="940" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="960" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="42" y="980" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<text x="452" y="34" text-anchor="middle" font-weight="bold">rear</text>
|
||||
<rect x="332" y="40" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="60" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="80" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="100" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="120" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="140" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="160" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="180" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="200" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="220" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="240" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="260" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="280" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="300" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="320" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="340" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="360" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="380" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="400" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="420" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="440" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="460" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="480" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="500" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="520" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="540" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="560" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="580" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="600" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="620" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="640" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="660" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="680" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="700" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="720" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="740" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="760" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="780" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="800" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="820" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="840" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="860" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="880" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="900" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="920" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="940" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="960" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<rect x="332" y="980" width="240" height="20" fill="#f5f5f5" stroke="#e0e0e0"/>
|
||||
<text x="38" y="54" text-anchor="end" fill="#999">1</text>
|
||||
<text x="38" y="74" text-anchor="end" fill="#999">2</text>
|
||||
<text x="38" y="94" text-anchor="end" fill="#999">3</text>
|
||||
<text x="38" y="114" text-anchor="end" fill="#999">4</text>
|
||||
<text x="38" y="134" text-anchor="end" fill="#999">5</text>
|
||||
<text x="38" y="154" text-anchor="end" fill="#999">6</text>
|
||||
<text x="38" y="174" text-anchor="end" fill="#999">7</text>
|
||||
<text x="38" y="194" text-anchor="end" fill="#999">8</text>
|
||||
<text x="38" y="214" text-anchor="end" fill="#999">9</text>
|
||||
<text x="38" y="234" text-anchor="end" fill="#999">10</text>
|
||||
<text x="38" y="254" text-anchor="end" fill="#999">11</text>
|
||||
<text x="38" y="274" text-anchor="end" fill="#999">12</text>
|
||||
<text x="38" y="294" text-anchor="end" fill="#999">13</text>
|
||||
<text x="38" y="314" text-anchor="end" fill="#999">14</text>
|
||||
<text x="38" y="334" text-anchor="end" fill="#999">15</text>
|
||||
<text x="38" y="354" text-anchor="end" fill="#999">16</text>
|
||||
<text x="38" y="374" text-anchor="end" fill="#999">17</text>
|
||||
<text x="38" y="394" text-anchor="end" fill="#999">18</text>
|
||||
<text x="38" y="414" text-anchor="end" fill="#999">19</text>
|
||||
<text x="38" y="434" text-anchor="end" fill="#999">20</text>
|
||||
<text x="38" y="454" text-anchor="end" fill="#999">21</text>
|
||||
<text x="38" y="474" text-anchor="end" fill="#999">22</text>
|
||||
<text x="38" y="494" text-anchor="end" fill="#999">23</text>
|
||||
<text x="38" y="514" text-anchor="end" fill="#999">24</text>
|
||||
<text x="38" y="534" text-anchor="end" fill="#999">25</text>
|
||||
<text x="38" y="554" text-anchor="end" fill="#999">26</text>
|
||||
<text x="38" y="574" text-anchor="end" fill="#999">27</text>
|
||||
<text x="38" y="594" text-anchor="end" fill="#999">28</text>
|
||||
<text x="38" y="614" text-anchor="end" fill="#999">29</text>
|
||||
<text x="38" y="634" text-anchor="end" fill="#999">30</text>
|
||||
<text x="38" y="654" text-anchor="end" fill="#999">31</text>
|
||||
<text x="38" y="674" text-anchor="end" fill="#999">32</text>
|
||||
<text x="38" y="694" text-anchor="end" fill="#999">33</text>
|
||||
<text x="38" y="714" text-anchor="end" fill="#999">34</text>
|
||||
<text x="38" y="734" text-anchor="end" fill="#999">35</text>
|
||||
<text x="38" y="754" text-anchor="end" fill="#999">36</text>
|
||||
<text x="38" y="774" text-anchor="end" fill="#999">37</text>
|
||||
<text x="38" y="794" text-anchor="end" fill="#999">38</text>
|
||||
<text x="38" y="814" text-anchor="end" fill="#999">39</text>
|
||||
<text x="38" y="834" text-anchor="end" fill="#999">40</text>
|
||||
<text x="38" y="854" text-anchor="end" fill="#999">41</text>
|
||||
<text x="38" y="874" text-anchor="end" fill="#999">42</text>
|
||||
<text x="38" y="894" text-anchor="end" fill="#999">43</text>
|
||||
<text x="38" y="914" text-anchor="end" fill="#999">44</text>
|
||||
<text x="38" y="934" text-anchor="end" fill="#999">45</text>
|
||||
<text x="38" y="954" text-anchor="end" fill="#999">46</text>
|
||||
<text x="38" y="974" text-anchor="end" fill="#999">47</text>
|
||||
<text x="38" y="994" text-anchor="end" fill="#999">48</text>
|
||||
<rect x="43" y="41" width="238" height="18" rx="3" fill="#4c78a8" stroke="#333"/>
|
||||
<text x="162" y="54" text-anchor="middle" fill="#ffffff">mf00 (U1)</text>
|
||||
<rect x="43" y="61" width="238" height="18" rx="3" fill="#4c78a8" stroke="#333"/>
|
||||
<text x="162" y="74" text-anchor="middle" fill="#ffffff">mf01 (U2)</text>
|
||||
<rect x="43" y="81" width="238" height="18" rx="3" fill="#4c78a8" stroke="#333"/>
|
||||
<text x="162" y="94" text-anchor="middle" fill="#ffffff">mf02 (U3)</text>
|
||||
<rect x="43" y="121" width="238" height="38" rx="3" fill="#4c78a8" stroke="#333"/>
|
||||
<text x="162" y="144" text-anchor="middle" fill="#ffffff">mf03 (U5–U6)</text>
|
||||
<rect x="333" y="121" width="238" height="38" rx="3" fill="#4c78a8" stroke="#333"/>
|
||||
<text x="452" y="144" text-anchor="middle" fill="#ffffff">mf04 (U5–U6)</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
17
docs/infrastructure/racks/rack01.md
Normal file
17
docs/infrastructure/racks/rack01.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Rack rack01
|
||||
|
||||
_Auto-generated from `docs/hardware/*.md` (items with `rack: rack01`) — do not edit by hand. Run `make docs-index` after changing a source file._
|
||||
|
||||
## Elevation
|
||||
|
||||

|
||||
|
||||
## Occupancy
|
||||
|
||||
| U | Device | Kind | Face | Status |
|
||||
|---|---|---|---|---|
|
||||
| U1 | [mf00](../../hardware/mf00.md) | server | front | staging |
|
||||
| U2 | [mf01](../../hardware/mf01.md) | server | front | staging |
|
||||
| U3 | [mf02](../../hardware/mf02.md) | server | front | staging |
|
||||
| U5–U6 | [mf03](../../hardware/mf03.md) | server | front | staging |
|
||||
| U5–U6 | [mf04](../../hardware/mf04.md) | server | rear | staging |
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
name: event management
|
||||
status: proposal
|
||||
name: coursemanagement
|
||||
kind: web-app
|
||||
status: planned
|
||||
---
|
||||
|
||||
# Problem statement
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue