{"id":29051355,"url":"https://github.com/ngschmidt/netconfig-sourdough-starter","last_synced_at":"2025-09-24T01:39:59.143Z","repository":{"id":67236141,"uuid":"371856362","full_name":"ngschmidt/netconfig-sourdough-starter","owner":"ngschmidt","description":"Automatically generating network configurations isn't as hard as you think! Copy this repository template and start adding `kinds` to quickly automate any network configuration process you might have.","archived":false,"fork":false,"pushed_at":"2021-06-01T05:21:16.000Z","size":58,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-26T22:19:49.524Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ngschmidt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-29T01:40:46.000Z","updated_at":"2021-06-01T05:21:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"cb0b8198-346a-4176-818f-bff1e9e394f2","html_url":"https://github.com/ngschmidt/netconfig-sourdough-starter","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/ngschmidt/netconfig-sourdough-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngschmidt%2Fnetconfig-sourdough-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngschmidt%2Fnetconfig-sourdough-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngschmidt%2Fnetconfig-sourdough-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngschmidt%2Fnetconfig-sourdough-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ngschmidt","download_url":"https://codeload.github.com/ngschmidt/netconfig-sourdough-starter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngschmidt%2Fnetconfig-sourdough-starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276678837,"owners_count":25684803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-26T22:10:29.164Z","updated_at":"2025-09-24T01:39:59.135Z","avatar_url":"https://github.com/ngschmidt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Network Device Builder\n\n## Goal\n\nConstruct a network configuration from basic facts (`kinds`) and a configuration template.\n\n## Overview\n\n### Validation\n\nIntuitively providing a way to validate what's missing in a device definition is pretty important. Dumping a starter file is even better.\n\n### Unit Testing\n\nWe want to construct *and automatically test* any non-factory (e.g. not provided by Jinja) capabilities to ensure quality is up to snuff. The approach here *MUST* be eminently testable.\n\nThis will be achieved by performing an end-to-end test against truth tables - all `kinds` should be iterable, providing the following objects under `testing`:\n\n```bash\n{{ kind }}-test.yml\n{{ kind }}-truth.txt\n```\n\nThis is required to ensure that end-results are consistent, and isn't just a test of code provided in this repository - if a dependency breaks, we'll see it in a pipeline prior to production usage.\n\n### Hardware Portfolio\n\nLocated in `kinds`. The eventual goal here is to use YAML Front Matter (YFM) to document `kinds` in-line as a markdown file.\n\n## HOWTO\n\nGenerate your `kind` device definition starter:\n\n```bash\npython3 net-starter.py -gen-kind {{ kind }}\n```\n\nAdd your variables, then run again:\n\n```bash\npython3 net-starter.py -i {{ variablefile }}\n```\n\nIdeally, store the variable file in a source of truth like [Netbox](https://netbox.readthedocs.io/en/stable/) for safe keeping!\n\n## Dependencies\n\n* `cerberus`\n* `jinja2`\n* `JSON`\n* `ruamel.YAML`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngschmidt%2Fnetconfig-sourdough-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngschmidt%2Fnetconfig-sourdough-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngschmidt%2Fnetconfig-sourdough-starter/lists"}