Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions documentation/domains/diffo_example_nbn.livemd
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,10 @@ Define the NNI Group with an SVLAN assignment and relate the NNI:

```elixir
nni_group = Nbn.define_nni_group!(nni_group, %{
characteristic_value_updates: [nni_group: [svlan: 100]]
characteristic_value_updates: [
nni_group: [name: "SYD-POI-01", location: "Sydney Olympic Park"],
svlans: [first: 1, last: 4000, free: 4000, assignable_type: "svlan"]
]
}, actor: actor)
nni_group = Nbn.relate_nni_group!(nni_group, %{
relationships: [%Diffo.Provider.Instance.Relationship{id: nni.id, alias: :nni, type: :isAssigned}]
Expand Down Expand Up @@ -201,7 +204,10 @@ Build an NTD — the device installed at the customer premises:
alias DiffoExample.Nbn.{Ntd, Uni, Avc, NbnEthernet}
ntd = Nbn.build_ntd!(%{})
ntd = Nbn.define_ntd!(ntd, %{
characteristic_value_updates: [ntd: [technology: :FTTP, ports: [1, 2, 3, 4]]]
characteristic_value_updates: [
ntd: [technology: :FTTP],
ports: [first: 1, last: 4, free: 4, assignable_type: "port"]
]
})
ntd |> Jason.encode!(pretty: true) |> IO.puts
```
Expand Down
37 changes: 17 additions & 20 deletions lib/access/resources/cable.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ defmodule DiffoExample.Access.Cable do
alias Diffo.Provider.BaseInstance
alias Diffo.Provider.Instance.Relationship
alias Diffo.Provider.Instance.Characteristic
alias Diffo.Provider.Instance.ActionHelper
alias Diffo.Provider.Assigner
alias Diffo.Provider.Assignment

Expand All @@ -27,38 +26,36 @@ defmodule DiffoExample.Access.Cable do
plural_name :Cables
end

specification do
id "ce0a567a-6abb-4862-9e33-851fd79fa595"
name "cable"
type :resourceSpecification
description "A Cable Resource Instance"
category "Network Resource"
structure do
specification do
id "ce0a567a-6abb-4862-9e33-851fd79fa595"
name "cable"
type :resourceSpecification
description "A Cable Resource Instance"
category "Network Resource"
end

characteristics do
characteristic :cable, DiffoExample.Access.CableValue
characteristic :pairs, Diffo.Provider.AssignableValue
end
end

characteristics do
characteristic :cable, DiffoExample.Access.CableValue
characteristic :pairs, Diffo.Provider.AssignableValue
behaviour do
actions do
create :build
end
end

actions do
create :build do
description "creates a new Cable resource instance for build"
accept [:id, :name, :type, :which]
argument :specified_by, :uuid, public?: false
argument :relationships, {:array, :struct}
argument :features, {:array, :uuid}, public?: false
argument :characteristics, {:array, :uuid}, public?: false
argument :places, {:array, :struct}
argument :parties, {:array, :struct}

change set_attribute(:type, :resource)

change before_action(fn changeset, _context -> ActionHelper.build_before(changeset) end)

change after_action(fn changeset, result, _context ->
ActionHelper.build_after(changeset, result, Access, :get_cable_by_id)
end)

change load [:href]
upsert? false
end
Expand Down
37 changes: 17 additions & 20 deletions lib/access/resources/card.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ defmodule DiffoExample.Access.Card do
alias Diffo.Provider.BaseInstance
alias Diffo.Provider.Instance.Relationship
alias Diffo.Provider.Instance.Characteristic
alias Diffo.Provider.Instance.ActionHelper
alias Diffo.Provider.Assigner
alias Diffo.Provider.Assignment

Expand All @@ -27,38 +26,36 @@ defmodule DiffoExample.Access.Card do
plural_name :Cards
end

specification do
id "cd29956f-6c68-44cc-bf54-705eb8d2f754"
name "card"
type :resourceSpecification
description "A Card Resource Instance"
category "Network Resource"
structure do
specification do
id "cd29956f-6c68-44cc-bf54-705eb8d2f754"
name "card"
type :resourceSpecification
description "A Card Resource Instance"
category "Network Resource"
end

characteristics do
characteristic :card, DiffoExample.Access.CardValue
characteristic :ports, Diffo.Provider.AssignableValue
end
end

characteristics do
characteristic :card, DiffoExample.Access.CardValue
characteristic :ports, Diffo.Provider.AssignableValue
behaviour do
actions do
create :build
end
end

actions do
create :build do
description "creates a new Card resource instance for build"
accept [:id, :name, :type, :which]
argument :specified_by, :uuid, public?: false
argument :relationships, {:array, :struct}
argument :features, {:array, :uuid}, public?: false
argument :characteristics, {:array, :uuid}, public?: false
argument :places, {:array, :struct}
argument :parties, {:array, :struct}

change set_attribute(:type, :resource)

change before_action(fn changeset, _context -> ActionHelper.build_before(changeset) end)

change after_action(fn changeset, result, _context ->
ActionHelper.build_after(changeset, result, Access, :get_card_by_id)
end)

change load [:href]
upsert? false
end
Expand Down
35 changes: 16 additions & 19 deletions lib/access/resources/path.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ defmodule DiffoExample.Access.Path do
alias Diffo.Provider.BaseInstance
alias Diffo.Provider.Instance.Relationship
alias Diffo.Provider.Instance.Characteristic
alias Diffo.Provider.Instance.ActionHelper

alias DiffoExample.Access

Expand All @@ -25,37 +24,35 @@ defmodule DiffoExample.Access.Path do
plural_name :Paths
end

specification do
id "1d507914-8f76-48cb-aa0e-3a8f92951ab0"
name "path"
type :resourceSpecification
description "A Path Resource Instance"
category "Network Resource"
structure do
specification do
id "1d507914-8f76-48cb-aa0e-3a8f92951ab0"
name "path"
type :resourceSpecification
description "A Path Resource Instance"
category "Network Resource"
end

characteristics do
characteristic :path, DiffoExample.Access.PathValue
end
end

characteristics do
characteristic :path, DiffoExample.Access.PathValue
behaviour do
actions do
create :build
end
end

actions do
create :build do
description "creates a new Path resource instance for build"
accept [:id, :name, :type, :which]
argument :specified_by, :uuid, public?: false
argument :relationships, {:array, :struct}
argument :features, {:array, :uuid}, public?: false
argument :characteristics, {:array, :uuid}, public?: false
argument :places, {:array, :struct}
argument :parties, {:array, :struct}

change set_attribute(:type, :resource)

change before_action(fn changeset, _context -> ActionHelper.build_before(changeset) end)

change after_action(fn changeset, result, _context ->
ActionHelper.build_after(changeset, result, Access, :get_path_by_id)
end)

change load [:href]
upsert? false
end
Expand Down
37 changes: 17 additions & 20 deletions lib/access/resources/shelf.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ defmodule DiffoExample.Access.Shelf do
alias Diffo.Provider.BaseInstance
alias Diffo.Provider.Instance.Relationship
alias Diffo.Provider.Instance.Characteristic
alias Diffo.Provider.Instance.ActionHelper
alias Diffo.Provider.Assigner
alias Diffo.Provider.Assignment

Expand All @@ -27,38 +26,36 @@ defmodule DiffoExample.Access.Shelf do
plural_name :Shelves
end

specification do
id "ef016d85-9dbd-429c-84da-1df56cc7dda5"
name "shelf"
type :resourceSpecification
description "A Shelf Resource Instance which contain cards"
category "Network Resource"
structure do
specification do
id "ef016d85-9dbd-429c-84da-1df56cc7dda5"
name "shelf"
type :resourceSpecification
description "A Shelf Resource Instance which contain cards"
category "Network Resource"
end

characteristics do
characteristic :shelf, DiffoExample.Access.ShelfValue
characteristic :slots, Diffo.Provider.AssignableValue
end
end

characteristics do
characteristic :shelf, DiffoExample.Access.ShelfValue
characteristic :slots, Diffo.Provider.AssignableValue
behaviour do
actions do
create :build
end
end

actions do
create :build do
description "creates a new Shelf resource instance for build"
accept [:id, :name, :type, :which]
argument :specified_by, :uuid, public?: false
argument :relationships, {:array, :struct}
argument :features, {:array, :uuid}, public?: false
argument :characteristics, {:array, :uuid}, public?: false
argument :places, {:array, :struct}
argument :parties, {:array, :struct}

change set_attribute(:type, :resource)

change before_action(fn changeset, _context -> ActionHelper.build_before(changeset) end)

change after_action(fn changeset, result, _context ->
ActionHelper.build_after(changeset, result, Access, :get_shelf_by_id)
end)

change load [:href]
upsert? false
end
Expand Down
48 changes: 23 additions & 25 deletions lib/access/services/dsl_access.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ defmodule DiffoExample.Access.DslAccess do
alias Diffo.Provider.BaseInstance
alias Diffo.Provider.Instance.Characteristic
alias Diffo.Provider.Instance.Place
alias Diffo.Provider.Instance.ActionHelper

alias DiffoExample.Access

Expand All @@ -25,25 +24,33 @@ defmodule DiffoExample.Access.DslAccess do
plural_name :DslAccesses
end

specification do
id "da9b207a-26c3-451d-8abd-0640c6349979"
name "dslAccess"
description "A DSL Access Network Service connecting a subscriber premises to an NNI"
category "Network Service"
end
structure do
specification do
id "da9b207a-26c3-451d-8abd-0640c6349979"
name "dslAccess"
description "A DSL Access Network Service connecting a subscriber premises to an NNI"
category "Network Service"
end

features do
feature :dynamic_line_management do
is_enabled? true
characteristic :constraints, DiffoExample.Access.Constraints
features do
feature :dynamic_line_management do
is_enabled? true
characteristic :constraints, DiffoExample.Access.Constraints
end
end

characteristics do
characteristic :dslam, DiffoExample.Access.Dslam
characteristic :aggregate_interface, DiffoExample.Access.AggregateInterface
characteristic :circuit, DiffoExample.Access.Circuit
characteristic :line, DiffoExample.Access.Line
end
end

characteristics do
characteristic :dslam, DiffoExample.Access.Dslam
characteristic :aggregate_interface, DiffoExample.Access.AggregateInterface
characteristic :circuit, DiffoExample.Access.Circuit
characteristic :line, DiffoExample.Access.Line
behaviour do
actions do
create :qualify
end
end

state_machine do
Expand All @@ -59,15 +66,6 @@ defmodule DiffoExample.Access.DslAccess do
accept [:id, :name, :type, :which]
argument :places, {:array, :struct}
argument :parties, {:array, :struct}
argument :specified_by, :uuid, public?: false
argument :characteristics, {:array, :uuid}, public?: false
argument :features, {:array, :uuid}, public?: false

change before_action(fn changeset, _context -> ActionHelper.build_before(changeset) end)

change after_action(fn changeset, result, _context ->
ActionHelper.build_after(changeset, result, Access, :get_dsl_by_id)
end)

change load [:href]
upsert? false
Expand Down
12 changes: 0 additions & 12 deletions lib/nbn/initializer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@ defmodule DiffoExample.Nbn.Initializer do
Diffo - TMF Service and Resource Management with a difference

Initializes the NBN domain on application startup:
- upserts all resource specifications into the catalog
- seeds RSP records in historical EPID sequence
"""

alias Diffo.Provider.Instance.Specification
alias DiffoExample.Nbn

@rsps [
Expand All @@ -25,16 +23,6 @@ defmodule DiffoExample.Nbn.Initializer do
]

def init do
Nbn
|> Ash.Domain.Info.resources()
|> Enum.each(fn module ->
try do
Specification.upsert_specification(module)
rescue
_ -> :ok
end
end)

seed_rsps()
end

Expand Down
Loading
Loading