You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+33-22Lines changed: 33 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,57 +13,68 @@ SPDX-License-Identifier: MIT
13
13
14
14
[Diffo](https://github.com/diffo-dev/diffo) is a Telecommunications Management Forum (TMF) Service and Resource Manager, built for autonomous networks.
15
15
16
-
This repo contains two independent example domains, each modelling a different slice of a telco network.
16
+
This repo contains two independent example domains, plus an orientation to the underlying Diffo Provider primitives. Read in this order:
17
17
18
-
## NBN Domain
18
+
1.**[The Access Domain](documentation/domains/access.md)** — the warm-up. A single fictional telco delivering DSL service over copper to its own customers. Five resources, one service, a small state machine. Walks the pattern end-to-end.
19
+
2.**[The Provider Domain](documentation/domains/provider.md)** — lifts the lid on the primitives Access has been using the whole time (Specification, Instance, typed Characteristics, Pools, Assignments, Relationships, Place, Party, state machine, the TMF JSON encoder).
20
+
3.**[The NBN Domain](documentation/domains/nbn.md)** — the deeper case. A fictional wholesale broadband network shared by many Retail Service Providers. Adds multi-tenancy via Ash Policy, a longer delivery chain, and the named-vs-metrics characteristic pattern with cross-resource inheritance.
19
21
20
-
A declarative model of a fictional NBN Ethernet access hierarchy — NbnEthernet, UNI, AVC, NTD, CVC, NNI Group, and NNI — built entirely with the Diffo Provider Instance DSL. Includes multi-tenancy via Ash Policy: each RSP can only see and manage the resources they own.
22
+
Each domain ships with a runnable livebook.
21
23
22
-
[](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fdiffo-dev%2Fdiffo_example%2Fblob%2Fdev%2Fdocumentation%2Fdomains%2Fdiffo_example_nbn.livemd)
24
+
## Access Livebook
23
25
24
-
The livebook walks through provisioning a complete NBN Ethernet access circuit, selecting an RSP to operate as, and demonstrating how the `mine` actions propagate technology, speeds, CVLAN, and port assignments up the resource hierarchy.
26
+
[](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fdiffo-dev%2Fdiffo_example%2Fblob%2Fmain%2Fdocumentation%2Fdomains%2Fdiffo_example_access.livemd)
25
27
26
-
## Access Domain
28
+
End-to-end scenario through the code-interface — exchange shelf with line cards, a customer access path through copper, qualify and design a DSL service for the subscriber, then read the inheritance chain.
27
29
28
-
A copper-network equivalent covering DSL access services — Cable, Card, Path, and Shelf. Explore `lib/access/` for the domain model.
30
+
## NBN Livebook
31
+
32
+
[](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fdiffo-dev%2Fdiffo_example%2Fblob%2Fmain%2Fdocumentation%2Fdomains%2Fdiffo_example_nbn.livemd)
33
+
34
+
The wholesale story — pick an RSP, build the shareable NNI Group / CVC, provision a subscriber's NBN Ethernet access end-to-end, then read the full delivery chain through inheritance and the live metrics on each resource.
35
+
36
+
## API reference (auto-generated)
37
+
38
+
-[Access Domain API](documentation/domains/_access_api.md) — every code-interface function on `DiffoExample.Access`.
39
+
-[NBN Domain API](documentation/domains/_nbn_api.md) — every code-interface function on `DiffoExample.Nbn`.
40
+
41
+
Both are regenerated from the domain DSL with `mix gen.api_docs`.
29
42
30
43
## Installation
31
44
32
-
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
33
-
by adding `diffo_example` to your list of dependencies in `mix.exs`:
45
+
The package can be installed by adding `diffo_example` to your list of dependencies in `mix.exs`:
34
46
35
47
```elixir
36
48
defdepsdo
37
49
[
38
-
{:diffo_example, "~> 0.0.2"}
50
+
{:diffo_example, "~> 0.2"}
39
51
]
40
52
end
41
53
```
42
54
43
-
You need [Neo4j](https://github.com/neo4j/neo4j) available. We recommend the Neo4j Community 5 latest, available at [Neo4j Deploymnent Centre](https://neo4j.com/deployment-center/) which can be installed locally. You can also configure connection to a cloudbased database service such as [Neo4j AuraDB](https://neo4j.com/product/auradb/).
55
+
You need [Neo4j](https://github.com/neo4j/neo4j) available. We recommend the Neo4j Community 5 latest, available at the [Neo4j Deployment Centre](https://neo4j.com/deployment-center/) which can be installed locally. You can also configure connection to a cloud-based database service such as [Neo4j AuraDB](https://neo4j.com/product/auradb/).
44
56
45
57
## Contributions
46
58
47
-
Contributions are welcome, please start with an [issue](https://github.com/diffo-dev/diffo_example/issues)
59
+
Contributions are welcome, please start with an [issue](https://github.com/diffo-dev/diffo_example/issues).
48
60
49
61
## Acknowledgements
50
62
51
63
Thanks to my colleagues in the Telco industry.
52
64
53
65
Thanks to the vibrant Elixir and Ash communities, and in particular the [Ash Core](https://github.com/ash-project) for [ash](https://github.com/ash-project/ash) 🚀
54
66
55
-
Thanks to [Florin Patrascu](https://github.com/florinpatrascu) for [bolt_sips](https://github.com/florinpatrascu/bolt_sips) and[Luis Sagastume](https://github.com/sagastume) for [boltx](https://github.com/sagastume/boltx), both forerunners of [bolty](https://github.com/diffo-dev/bolty) the bolt driver for neo4j.
67
+
Thanks to [Florin Patrascu](https://github.com/florinpatrascu) for [bolt_sips](https://github.com/florinpatrascu/bolt_sips) and[Luis Sagastume](https://github.com/sagastume) for [boltx](https://github.com/sagastume/boltx), both forerunners of [bolty](https://github.com/diffo-dev/bolty)— the Bolt driver for Neo4j.
56
68
57
69
Thanks to the [Neo4j Core](https://github.com/neo4j) for [neo4j](https://github.com/neo4j/neo4j) and pioneering work on graph databases.
58
70
59
71
## Links
60
72
61
-
[Diffo TMF Service and Resource Manager](https://github.com/diffo-dev/diffo)
0 commit comments