{"id":32971823,"url":"https://github.com/netdevops/hier_config","last_synced_at":"2026-04-01T19:05:27.645Z","repository":{"id":39586419,"uuid":"133052594","full_name":"netdevops/hier_config","owner":"netdevops","description":"Hierarchical Configuration","archived":false,"fork":false,"pushed_at":"2026-03-26T13:41:57.000Z","size":5964,"stargazers_count":144,"open_issues_count":22,"forks_count":32,"subscribers_count":9,"default_branch":"master","last_synced_at":"2026-03-26T19:29:31.220Z","etag":null,"topics":["configuration-management","network-analysis","network-programming"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netdevops.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-05-11T14:49:58.000Z","updated_at":"2026-03-26T13:41:12.000Z","dependencies_parsed_at":"2024-01-15T23:53:14.547Z","dependency_job_id":"fae8c8fd-3c2d-4416-b538-ee07882919af","html_url":"https://github.com/netdevops/hier_config","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/netdevops/hier_config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdevops%2Fhier_config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdevops%2Fhier_config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdevops%2Fhier_config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdevops%2Fhier_config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netdevops","download_url":"https://codeload.github.com/netdevops/hier_config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netdevops%2Fhier_config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291044,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["configuration-management","network-analysis","network-programming"],"created_at":"2025-11-13T05:00:31.832Z","updated_at":"2026-04-01T19:05:27.637Z","avatar_url":"https://github.com/netdevops.png","language":"Python","readme":"# Hierarchical Configuration\n\nHierarchical Configuration, also known as `hier_config`, is a Python library designed to query and compare network devices configurations. Among other capabilities, it can compare the running config to an intended configuration to determine the commands necessary to bring a device into compliance with its intended configuration.\n\nHierarchical Configuration has been used extensively on:\n\n- [x] Cisco IOS\n- [x] Cisco IOSXR\n- [x] Cisco NXOS\n- [x] Arista EOS\n- [x] Fortinet FortiOS\n- [x] HP Procurve (Aruba AOSS)\n- [x] HP Comware5 / H3C\n- [x] Huawei VRP\n\nIn addition to the Cisco-style syntax, hier_config offers experimental support for Juniper-style configurations using set and delete commands. This allows users to remediate Junos configurations in native syntax. However, please note that Juniper syntax support is still in an experimental phase and has not been tested extensively. Use with caution in production environments.\n\n- [x] Juniper JunOS\n- [x] VyOS\n\nHier Config is compatible with any NOS that utilizes a structured CLI syntax similar to Cisco IOS or Junos OS.\n\nThe code documentation can be found at: [Hier Config documentation](https://hier-config.readthedocs.io/en/latest/).\n\n## Why hier_config?\n\nNetwork devices continuously drift from their intended state — VLANs appear, ACL entries change, BGP timers shift.  hier_config solves this by parsing configuration text into a hierarchical tree and performing deterministic, line-level diffs that respect the vendor's own syntax rules.  Rather than string-matching raw text, it understands the structure of commands so that remediation output is minimal, ordered, and safe to apply.\n\n## Highlights\n\n- Predict the device state before deploying with [`future()`](https://hier-config.readthedocs.io/en/latest/future-config/) and generate accurate rollbacks that preserve distinct structural commands — BGP neighbor descriptions, for example, no longer collapse when multiple peers share a common prefix.\n- Build remediation workflows with deterministic diffs across [Cisco-style and Junos-style](https://hier-config.readthedocs.io/en/latest/drivers/) configuration syntaxes.\n- Tag remediation lines and filter output with [tag-based rules](https://hier-config.readthedocs.io/en/latest/tags/) for phased or conditional deployment.\n- Aggregate and analyse changes across a fleet with [RemediationReporter](https://hier-config.readthedocs.io/en/latest/remediation-reporting/).\n- Render structured, typed interface data with the [Config View](https://hier-config.readthedocs.io/en/latest/config-view/) abstraction.\n\nSee the [Architecture Overview](https://hier-config.readthedocs.io/en/latest/architecture/) for how the tree, driver, and workflow layers fit together.\n\n## Installation\n\n### PIP\n\nInstall from PyPi:\n\n```shell\npip install hier-config\n```\n\n## Quick Start\n\n### Step 1: Import Required Classes\n\n```python\nfrom hier_config import WorkflowRemediation, get_hconfig, Platform\nfrom hier_config.utils import read_text_from_file\n```\n\n### Step 2: Load Configurations\n\nLoad the running and intended configurations as strings:\n\n```python\nrunning_config_text = read_text_from_file(\"./tests/fixtures/running_config.conf\")\ngenerated_config_text = read_text_from_file(\"./tests/fixtures/generated_config.conf\")\n```\n\n### Step 3: Create HConfig Objects\n\nSpecify the device platform (e.g., `Platform.CISCO_IOS`):\n\n```python\nrunning_config = get_hconfig(Platform.CISCO_IOS, running_config_text)\ngenerated_config = get_hconfig(Platform.CISCO_IOS, generated_config_text)\n```\n\n### Step 4: Initialize WorkflowRemediation\n\nCompare configurations and generate remediation steps:\n\n```python\nworkflow = WorkflowRemediation(running_config, generated_config)\n\nprint(\"Remediation Configuration:\")\nprint(workflow.remediation_config)\n```\n\nThis guide gets you started with Hier Config in minutes! For more details, visit [Hier Config Documentation Site](https://hier-config.readthedocs.io/en/latest/).\n","funding_links":[],"categories":["Library"],"sub_categories":["NETCONF"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetdevops%2Fhier_config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetdevops%2Fhier_config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetdevops%2Fhier_config/lists"}