diff --git a/Makefile b/Makefile new file mode 100644 --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +# ------------------------------------------------------------- +# Nasqueron - API +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Description: Build API files +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + +API_FILES=infra/servers.json +YAML_TO_JSON=_utils/yaml2json.py + +RM=rm -f + +# ------------------------------------------------------------- +# Main targets +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +all: $(API_FILES) + +clean: + ${RM} ${API_FILES} + +# ------------------------------------------------------------- +# API targets +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +infra/servers.json: + ${YAML_TO_JSON} infra/datasource.yml servers > infra/servers.json diff --git a/_utils/yaml2json.py b/_utils/yaml2json.py new file mode 100755 --- /dev/null +++ b/_utils/yaml2json.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +# ------------------------------------------------------------- +# Nasqueron - API +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Project: Nasqueron +# Description: Create a JSON document from a YAML datasource +# License: Trivial work, not eligible to copyright +# ------------------------------------------------------------- + + +import json +import sys +import yaml + + +# ------------------------------------------------------------- +# Convert +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +def to_json(source_path, key=None): + with open(source_path) as fd: + data = yaml.safe_load(fd) + + if key: + data = data[key] + + return json.dumps(data, indent=4) + + +# ------------------------------------------------------------- +# Application entry point +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + +def run(source_path, key=None): + print(to_json(source_path, key)) + + +if __name__ == "__main__": + argc = len(sys.argv) + + if argc < 2: + print(f"Usage: {sys.argv[0]} <YAML datasource> [key to take]", file=sys.stderr) + sys.exit(1) + + run(*sys.argv[1:3]) diff --git a/index.html b/index.html --- a/index.html +++ b/index.html @@ -15,6 +15,7 @@ <ul> <li><strong><a href="/servers-log/all.json">/servers-log/all.json</a></strong> — Servers log</li> <li><strong><a href="/docker/registry">/docker/registry</a></strong> — Docker registry API</li> + <li><strong><a href="/infra/servers.json">/infra/servers.json</a></strong> — Servers list</li> </ul> <h2>Tools</h2> <ul> diff --git a/infra/datasource.yml b/infra/datasource.yml new file mode 100644 --- /dev/null +++ b/infra/datasource.yml @@ -0,0 +1,31 @@ +servers: + + windriver: + name: WindRiver + hostname: windriver.nasqueron.org + description: Development server + configurator: salt + + ysul: + name: Ysul + hostname: ysul.nasqueron.org + description: Development server (legacy) + configurator: salt + + cloudhugger: + name: CloudHugger + hostname: cloudhugger.nasqueron.org + description: OpenSearch testing + configurator: Salt + + docker-001: + name: docker-001 + hostname: docker-001.nasqueron.org + description: Docker engine (prod) + configurator: Salt + + dwellers: + name: Dwellers + hostname: dwellers.nasqueron.org + description: Docker engine (dev) + configurator: Salt diff --git a/infra/servers.json b/infra/servers.json new file mode 100644 --- /dev/null +++ b/infra/servers.json @@ -0,0 +1,32 @@ +{ + "windriver": { + "name": "WindRiver", + "hostname": "windriver.nasqueron.org", + "description": "Development server", + "configurator": "salt" + }, + "ysul": { + "name": "Ysul", + "hostname": "ysul.nasqueron.org", + "description": "Development server (legacy)", + "configurator": "salt" + }, + "cloudhugger": { + "name": "CloudHugger", + "hostname": "cloudhugger.nasqueron.org", + "description": "OpenSearch testing", + "configurator": "Salt" + }, + "docker-001": { + "name": "docker-001", + "hostname": "docker-001.nasqueron.org", + "description": "Docker engine (prod)", + "configurator": "Salt" + }, + "dwellers": { + "name": "Dwellers", + "hostname": "dwellers.nasqueron.org", + "description": "Docker engine (dev)", + "configurator": "Salt" + } +}