{"id":21147501,"url":"https://github.com/openconfig/entity-naming","last_synced_at":"2025-10-19T20:42:11.072Z","repository":{"id":173433677,"uuid":"641055434","full_name":"openconfig/entity-naming","owner":"openconfig","description":"Libraries for mapping canonical names of OpenConfig entities to platform specific implementations","archived":false,"fork":false,"pushed_at":"2024-04-19T15:48:02.000Z","size":205,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-05-10T17:20:37.533Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openconfig.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2023-05-15T17:25:29.000Z","updated_at":"2024-05-08T06:34:17.000Z","dependencies_parsed_at":"2024-03-14T01:39:09.486Z","dependency_job_id":null,"html_url":"https://github.com/openconfig/entity-naming","commit_stats":null,"previous_names":["openconfig/entity-naming"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconfig%2Fentity-naming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconfig%2Fentity-naming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconfig%2Fentity-naming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openconfig%2Fentity-naming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openconfig","download_url":"https://codeload.github.com/openconfig/entity-naming/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225495094,"owners_count":17483145,"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","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":"2024-11-20T09:03:27.762Z","updated_at":"2025-10-19T20:42:06.032Z","avatar_url":"https://github.com/openconfig.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# entity-naming\n\nEntity-naming is a Go library for computing the vendor-specific names of\nOpenConfig entities. The goal of the library is to enable client code to\nretrieve the name of network entities without including vendor-specific logic\nitself. These entities include physical and virtual interfaces, components like\nlinecards and fabrics, and more.\n\nThe computation of the names is delegated to a set of vendor-specific naming\nimplementations. The functions provided by the library are self-contained and\nfree of any I/O. The code does _not_ communicate with network devices or\nexternal services. Rather, the library provides simple, pure-Go implementations\nof the vendor-specific entity naming conventions.\n\n## Example Usage\n\nHere is the signature for the function for computing the name of an aggregate\ninterface:\n\n```go\nfunc AggregateInterface(dev *DeviceParams, index int) (string, error)\n```\n\nAll of the functions provided by the library accept a set of of device\nparameters, provided in a `DeviceParams` struct. To compute the name of a\nJuniper PTX10008, for example, you would construct the following device\nparameters:\n\n```go\ndev := \u0026entname.DeviceParams{\n    Vendor: entname.VendorJuniper,\n    HardwareModel: \"PTX10008\",\n}\n```\n\nAll index parameters accepted by the library are _zero-based_indices_, even in\ncases where the vendor starts their numbering at 1 or later. For example, to\ncompute the name of the first aggregate interface, use the call\n\n```go\naggName, err := AggregateInterface(dev, 0)\n```\n\nFor the Juniper device parameters we provided, `aggName` will be \"ae0\", but for\nan Arista device it will be \"Port-Channel1\", for Cisco \"Bundle-Ether1\", and for\nNokia \"lag1.\"\n\n## Common QoS Queues\n\nThe library includes a `CommonQoSQueues` function that returns vendor-specific\nqueue names for the common QoS classes. To learn details of the OpenConfig QoS\nmodel, see \u003chttps://openconfig.net/docs/models/qos/\u003e. The common QoS classes are\ndefined in the following table, from highest to lowest priority:\n\n| Class | QoS Level                     | Description                                                                                                                                        |\n| ----- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |\n| NC1   | Network Control               | Traffic critical to the functionality of network devices and protocols, including routing protocol communication (OSPF, BGP, ISIS)                 |\n| AF4   | Assured Forwarding Priority 4 | Critical application and production traffic that requires low latency communication                                                                |\n| AF3   | Assured Forwarding Priority 3 | Mid-priority internal applications and higher bandwidth user applications that have lower latency sensitivity than AF4                             |\n| AF2   | Assured Forwarding Priority 2 | Latency-insensitive, minimal loss-tolerating internal traffic that requires some amount of guaranteed delivery                                     |\n| AF1   | Assured Forwarding Priority 1 | High-bandwidth, latency-insensitive traffic                                                                                                        |\n| BE1   | Best Effort                   | Latency-insensitive, loss-insensitive traffic that can exhibit a substantial amount of packet loss and therefore should not carry any user traffic |\n| BE0   | High-loss Best Effort         | Latency-insensitive, loss-insensitive traffic that can exhibit a higher loss rate than BE1                                                         |\n\n## Contributions\n\nContributions are more than welcome, specially from the vendors themselves.\n\nTo add support for a new vendor, your PR should add a new value to the `Vendor`\nenum in\n[entname.go](https://github.com/openconfig/entity-naming/blob/main/entname/entname.go)\nand add a new directory named for that vendor under\n[internal](https://github.com/openconfig/entity-naming/tree/main/internal).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenconfig%2Fentity-naming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenconfig%2Fentity-naming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenconfig%2Fentity-naming/lists"}