Public getters interface
MINDFul.getadddropport
— Methodgetadddropport(
ena::MINDFul.EndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.getadddropport
— Methodgetadddropport(
ena::MINDFul.MutableEndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.getadddropport
— Methodgetadddropport(
oxcswitchentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Int64
MINDFul.getadddropport
— Methodgetadddropport(
tmlli::MINDFul.TransmissionModuleLLI
) -> Int64
MINDFul.getadddropportnumber
— Methodgetadddropportnumber(oxcview::MINDFul.OXCView) -> Int64
MINDFul.getborderedges
— Methodgetborderedges(
ibnf::MINDFul.IBNFramework
) -> Vector{Graphs.SimpleGraphs.SimpleEdge{Int64}}
Return all border edges that contain at least one border node as endpoints
MINDFul.getborderglobaledges
— Methodgetborderglobaledges(ibnf::MINDFul.IBNFramework) -> Vector
Return all border edges that contain at least one border node as endpoints as global
MINDFul.getbordernodesasglobal
— Methodgetbordernodesasglobal(ibnf::MINDFul.IBNFramework) -> Vector
Return all border nodes of ibnf
with globalnode
representation
MINDFul.getbordernodesaslocal
— Methodgetbordernodesaslocal(ibnf::MINDFul.IBNFramework) -> Vector
Return all border nodes of ibnf
with localnode
representation
MINDFul.getconstraints
— Methodgetconstraints(
conintent::MINDFul.ConnectivityIntent
) -> Vector{T} where T<:MINDFul.AbstractIntentConstraint
MINDFul.getcost
— Methodgetcost(s) -> Any
MINDFul.getcurrentstate
— Methodgetcurrentstate(
intentlogstate::Array{Tuple{Dates.DateTime, S}, 1} where S<:Enum{Int32}
) -> Enum{Int32}
MINDFul.getdestinationnode
— Methodgetdestinationnode(
conintent::MINDFul.ConnectivityIntent
) -> MINDFul.GlobalNode
MINDFul.getdestinationnode
— Methodgetdestinationnode(
lpr::MINDFul.LightpathRepresentation
) -> MINDFul.GlobalNode
MINDFul.getdestinationnode
— Methodgetdestinationnode(
otc::MINDFul.OpticalTerminateConstraint
) -> MINDFul.GlobalNode
MINDFul.getdistance
— Methodgetdistance(
s
) -> Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
MINDFul.getdistance
— Methodgetdistance(
s::MINDFul.EdgeView
) -> Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
MINDFul.getedgeview
— Methodgetedgeview(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
ed::Graphs.SimpleGraphs.SimpleEdge
) -> MINDFul.EdgeView
MINDFul.getedgeviews
— Methodgetedgeviews(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
) -> Vector
MINDFul.getfiberspectrumavailabilities
— Methodgetfiberspectrumavailabilities(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
edge::Graphs.SimpleGraphs.SimpleEdge{Int64};
checkfirst
) -> Union{Nothing, Vector{Bool}}
MINDFul.getfiberspectrumavailabilities
— Methodgetfiberspectrumavailabilities(
ibnf::MINDFul.IBNFramework,
edge::Graphs.SimpleGraphs.SimpleEdge{Int64};
checkfirst,
verbose
) -> Union{Nothing, Symbol, Vector{Bool}}
Get the spectrum availability slots vector for edge
MINDFul.getglobalnode
— Methodgetglobalnode(s) -> Any
MINDFul.getglobalnode
— Methodgetglobalnode(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
localnode::Int64
) -> MINDFul.GlobalNode
Return the global representation given the local representation. Return nothing
if not found
MINDFul.getibnag
— Methodgetibnag(s) -> Any
Get the IBNAttributeGraph
MINDFul.getibnfhandler
— Methodgetibnfhandler(
s::MINDFul.IBNFramework,
uuid::Base.UUID
) -> MINDFul.AbstractIBNFHandler
MINDFul.getibnfhandler
— Methodgetibnfhandler(
s::MINDFul.IBNFramework
) -> MINDFul.IBNFramework
Get the handler of the given IBNFramework.
MINDFul.getibnfhandlers
— Methodgetibnfhandlers(
s::MINDFul.IBNFramework
) -> Vector{H} where H<:MINDFul.AbstractIBNFHandler
MINDFul.getibnfid
— Methodgetibnfid(s) -> Base.UUID
Get the id of the IBNFramework
MINDFul.getibnfid
— Methodgetibnfid(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
) -> Base.UUID
MINDFul.getibnfid
— Methodgetibnfid(ri::MINDFul.RemoteIntent) -> Base.UUID
MINDFul.getidag
— Methodgetidag(
s::MINDFul.IBNFramework
) -> AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
Get the IntentDAG
MINDFul.getidagcounter
— Methodgetidagcounter(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> Int64
MINDFul.getidagcounter
— Methodgetidagcounter(
intentdaginfo::MINDFul.IntentDAGInfo
) -> Int64
MINDFul.getidagnodeid
— Methodgetidagnodeid(idagnode::MINDFul.IntentDAGNode) -> Base.UUID
MINDFul.getidagnodeid
— Methodgetidagnodeid(ri::MINDFul.RemoteIntent) -> Base.UUID
MINDFul.getidagnodestate
— Methodgetidagnodestate(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
dagnodeid::Base.UUID
) -> MINDFul.IntentState.T
MINDFul.getidagnodestate
— Methodgetidagnodestate(
idagnode::MINDFul.IntentDAGNode
) -> MINDFul.IntentState.T
MINDFul.getinneighbors
— Methodgetinneighbors(np::MINDFul.NodeProperties) -> Vector{Int64}
MINDFul.getintent
— Methodgetintent(
idagnode::MINDFul.IntentDAGNode
) -> MINDFul.AbstractIntent
MINDFul.getintent
— Methodgetintent(
ri::MINDFul.RemoteIntent
) -> MINDFul.AbstractIntent
MINDFul.getintranodeviews
— Methodgetintranodeviews(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
) -> Vector{T} where T<:MINDFul.NodeView
MINDFul.getisinitiator
— Methodgetisinitiator(ri::MINDFul.RemoteIntent) -> Bool
MINDFul.getlatitude
— Methodgetlatitude(np::MINDFul.NodeProperties) -> Float64
MINDFul.getlinkspectrumavailabilities
— Methodgetlinkspectrumavailabilities(
oxcview::MINDFul.OXCView
) -> Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Bool}}
MINDFul.getlocalnode
— Methodgetlocalnode(s) -> Int64
MINDFul.getlocalnode
— Methodgetlocalnode(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
globalnode::MINDFul.GlobalNode
) -> Any
Return the localnode representation given the global representation. Return nothing
if not found
MINDFul.getlocalnode
— Methodgetlocalnode(ena::MINDFul.EndNodeAllocations) -> Int64
MINDFul.getlocalnode
— Methodgetlocalnode(
ena::MINDFul.MutableEndNodeAllocations
) -> Int64
MINDFul.getlocalnode_input
— Methodgetlocalnode_input(
ena::MINDFul.EndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.getlocalnode_input
— Methodgetlocalnode_input(
ena::MINDFul.MutableEndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.getlocalnode_input
— Methodgetlocalnode_input(
oxcswitchreservationentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Int64
MINDFul.getlocalnode_output
— Methodgetlocalnode_output(ena::MINDFul.MutableEndNodeAllocations)
MINDFul.getlocalnode_output
— Methodgetlocalnode_output(
oxcswitchentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Int64
MINDFul.getlogstate
— Methodgetlogstate(
idagnode::MINDFul.IntentDAGNode
) -> Vector{Tuple{Dates.DateTime, MINDFul.IntentState.T}}
MINDFul.getlongitude
— Methodgetlongitude(np::MINDFul.NodeProperties) -> Float64
MINDFul.getnodeproperties
— Methodgetnodeproperties(
s::MINDFul.NodeView
) -> MINDFul.NodeProperties
MINDFul.getnodeview
— Methodgetnodeview(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
node::Int64
) -> MINDFul.NodeView
MINDFul.getnodeview
— Methodgetnodeview(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
node::MINDFul.GlobalNode
) -> Any
MINDFul.getnodeview
— Methodgetnodeview(
ibnf::MINDFul.IBNFramework,
node::Int64
) -> MINDFul.NodeView
MINDFul.getnodeviews
— Methodgetnodeviews(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
) -> Vector{T} where T<:MINDFul.NodeView
MINDFul.getopticalinitiateconstraint
— Methodgetopticalinitiateconstraint(
ibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID
) -> Union{Nothing, MINDFul.OpticalInitiateConstraint}
Get the OpticalInitiateConstraint
for the current intent DAG. If the compilation is not optically terminated return nothing
.
To me this has all the logic needed to be type stable but the compiler fails.
MINDFul.getopticalreach
— Methodgetopticalreach(
tm::MINDFul.TransmissionMode
) -> Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
MINDFul.getoutneighbors
— Methodgetoutneighbors(np::MINDFul.NodeProperties) -> Vector{Int64}
MINDFul.getoxcadddropportindex
— Methodgetoxcadddropportindex(
s::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Int64
MINDFul.getoxcview
— Methodgetoxcview(
s::MINDFul.NodeView
) -> Union{Nothing, MINDFul.OXCView}
MINDFul.getpathspectrumavailabilities
— Methodgetpathspectrumavailabilities(
ibnf::MINDFul.IBNFramework,
localnodespath::Vector{Int64};
checkfirst
) -> Any
Get spectrum availabilities along a path
of nodes as a BitVector
MINDFul.getportnumber
— Methodgetportnumber(s) -> Int64
MINDFul.getportnumber
— Methodgetportnumber(s::MINDFul.RouterView) -> Int64
MINDFul.getproperties
— Methodgetproperties(s::MINDFul.EdgeView) -> MINDFul.EdgeProperties
MINDFul.getproperties
— Methodgetproperties(s::MINDFul.NodeView) -> MINDFul.NodeProperties
MINDFul.getrate
— Methodgetrate(
conintent::MINDFul.ConnectivityIntent
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
MINDFul.getrate
— Methodgetrate(
s::MINDFul.RouterPort
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
MINDFul.getrate
— Methodgetrate(
tm::MINDFul.TransmissionMode
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
MINDFul.getrate
— Methodgetrate(
tmc::MINDFul.TransmissionModuleCompatibility
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
MINDFul.getreservations
— Methodgetreservations(
nodeview::MINDFul.NodeView
) -> Union{Nothing, Dict{Base.UUID, MINDFul.TransmissionModuleLLI}}
MINDFul.getreservations
— Methodgetreservations(
oxcview::MINDFul.OXCView
) -> Dict{Base.UUID, MINDFul.OXCAddDropBypassSpectrumLLI}
MINDFul.getreservations
— Methodgetreservations(
routerview::MINDFul.RouterView
) -> Dict{Base.UUID, MINDFul.RouterPortLLI}
MINDFul.getreservedtransmissionmode
— Methodgetreservedtransmissionmode(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{MINDFul.TransmissionModuleLLI};
verbose
) -> Union{MINDFul.TransmissionMode, Symbol}
Get the reserved transmission mode
MINDFul.getrouterportindex
— Methodgetrouterportindex(
ena::MINDFul.EndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.getrouterportindex
— Methodgetrouterportindex(
ena::MINDFul.MutableEndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.getrouterportindex
— Methodgetrouterportindex(s::MINDFul.RouterPortLLI) -> Int64
MINDFul.getrouterportindex
— Methodgetrouterportindex(
s::MINDFul.TransmissionModuleLLI
) -> Int64
MINDFul.getrouterview
— Methodgetrouterview(
s::MINDFul.NodeView
) -> Union{Nothing, MINDFul.RouterView}
MINDFul.getsdncontroller
— Methodgetsdncontroller(s) -> Any
Get the sdn controller subtype of AbstractSDNController
MINDFul.getsourcenode
— Methodgetsourcenode(
conintent::MINDFul.ConnectivityIntent
) -> MINDFul.GlobalNode
MINDFul.getspectrumavailability
— Methodgetspectrumavailability(s) -> Any
MINDFul.getspectrumslots
— Methodgetspectrumslots(s) -> Any
MINDFul.getspectrumslotsneeded
— Methodgetspectrumslotsneeded(
tm::MINDFul.TransmissionMode
) -> Int64
MINDFul.getspectrumslotsneeded
— Methodgetspectrumslotsneeded(
tmc::MINDFul.TransmissionModuleCompatibility
) -> Int64
MINDFul.getspectrumslotsrange
— Methodgetspectrumslotsrange(
lpintent::MINDFul.LightpathIntent
) -> UnitRange{Int64}
MINDFul.getspectrumslotsrange
— Methodgetspectrumslotsrange(
oxcswitchentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> UnitRange{Int64}
MINDFul.gettransmissionmode
— Methodgettransmissionmode(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
oxclli::MINDFul.TransmissionModuleLLI
) -> MINDFul.TransmissionMode
MINDFul.gettransmissionmode
— Methodgettransmissionmode(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{MINDFul.TransmissionModuleLLI}
) -> MINDFul.TransmissionMode
Get the transmission mode
MINDFul.gettransmissionmode
— Methodgettransmissionmode(
ibnf::MINDFul.IBNFramework,
intent::MINDFul.TransmissionModuleLLI
) -> MINDFul.TransmissionMode
Get the transmission mode
MINDFul.gettransmissionmode
— Methodgettransmissionmode(
s::MINDFul.TransmissionModuleView,
transmissionmodeidx::Int64
) -> MINDFul.TransmissionMode
MINDFul.gettransmissionmodes
— Methodgettransmissionmodes(
s::MINDFul.TransmissionModuleView
) -> Vector{MINDFul.TransmissionMode}
MINDFul.gettransmissionmodesindex
— Methodgettransmissionmodesindex(
ena::MINDFul.EndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.gettransmissionmodesindex
— Methodgettransmissionmodesindex(
ena::MINDFul.MutableEndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.gettransmissionmodesindex
— Methodgettransmissionmodesindex(
s::MINDFul.TransmissionModuleLLI
) -> Int64
MINDFul.gettransmissionmodule
— Methodgettransmissionmodule(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
oxclli::MINDFul.TransmissionModuleLLI
) -> MINDFul.TransmissionModuleView
MINDFul.gettransmissionmodule
— Methodgettransmissionmodule(
ibnf::MINDFul.IBNFramework,
intent::MINDFul.TransmissionModuleLLI
) -> MINDFul.TransmissionModuleView
Get the transmission mode
MINDFul.gettransmissionmodulecompat
— Methodgettransmissionmodulecompat(
oic::MINDFul.OpticalInitiateConstraint
) -> MINDFul.TransmissionModuleCompatibility
MINDFul.gettransmissionmodulereservations
— Methodgettransmissionmodulereservations(
s::MINDFul.NodeView
) -> Dict{Base.UUID, MINDFul.TransmissionModuleLLI}
MINDFul.gettransmissionmoduleviewpool
— Methodgettransmissionmoduleviewpool(
s::MINDFul.NodeView
) -> Union{Nothing, Vector{T}} where T<:MINDFul.TransmissionModuleView
MINDFul.gettransmissionmoduleviewpoolindex
— Methodgettransmissionmoduleviewpoolindex(
ena::MINDFul.EndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.gettransmissionmoduleviewpoolindex
— Methodgettransmissionmoduleviewpoolindex(
ena::MINDFul.MutableEndNodeAllocations
) -> Union{Nothing, Int64}
MINDFul.gettransmissionmoduleviewpoolindex
— Methodgettransmissionmoduleviewpoolindex(
s::MINDFul.TransmissionModuleLLI
) -> Int64
MINDFul.getunderlyingequipment
— Methodgetunderlyingequipment(
s::MINDFul.TransmissionModuleView
) -> MINDFul.AbstractTransmissionModule
MINDFul.getweights
— Methodgetweights(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
) -> Matrix
Other public interface
MINDFul.addintent!
— Methodaddintent!(
ibnf::MINDFul.IBNFramework,
intent::MINDFul.AbstractIntent,
intentissuer::MINDFul.IntentIssuer;
offsettime
) -> Base.UUID
kk Add a new user intent to the IBN framework and return the id.
MINDFul.compileintent!
— Methodcompileintent!(
ibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
algorithm::MINDFul.IntentCompilationAlgorithm;
verbose,
offsettime
) -> Symbol
MINDFul.compileintent!
— Methodcompileintent!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
kspffcomp::MINDFul.KShorestPathFirstFitCompilation;
verbose,
offsettime
) -> Symbol
MINDFul.compileintent!
— Methodcompileintent!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.LightpathIntent},
algorithm::MINDFul.IntentCompilationAlgorithm;
verbose,
offsettime
)
MINDFul.compileintent!
— Methodcompileintent!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.RemoteIntent},
algorithm::MINDFul.IntentCompilationAlgorithm;
verbose,
offsettime
)
MINDFul.findindexglobalnode
— Methodfindindexglobalnode(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
globalnode::MINDFul.GlobalNode
) -> Union{Nothing, Int64}
Convenience function that returns the findfirst
for the global node
MINDFul.installintent!
— Methodinstallintent!(
ibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.isbordernode
— Methodisbordernode(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
localnode::Int64
) -> Bool
Return boolean if localnode
is in ibnf
as a border node
MINDFul.isbordernode
— Methodisbordernode(
ibnf::MINDFul.IBNFramework,
localnode::Int64
) -> Any
Return boolean if localnode
is in ibnf
as a border node
MINDFul.isbordernode
— Methodisbordernode(
ibnf::MINDFul.IBNFramework,
globalnode::MINDFul.GlobalNode
) -> Any
Return boolean if globalnode
is in ibnf
as a border node
MINDFul.isinternalnode
— Methodisinternalnode(
ibnf::MINDFul.IBNFramework,
globalnode::MINDFul.GlobalNode
) -> Bool
Return boolean if globalnode
belongs to ibnf
MINDFul.remoteintent!
— Methodremoteintent!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode,
remoteibnfid::Base.UUID;
offsettime
) -> MINDFul.IntentDAGNode{I, MINDFul.MachineGenerated} where I<:MINDFul.RemoteIntent
Add a RemoteIntent
as a child intent and delegate it to the ibn with id remoteibndif
MINDFul.removeintent!
— Methodremoveintent!(
ibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.uncompileintent!
— Methoduncompileintent!(
ibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.uninstallintent!
— Methoduninstallintent!(
ibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.IntentState
— ModuleAll possible default intent states. Another intent state schema could be defined.
Public return codes
MINDFul.ReturnCodes
— ModuleThe return codes defined for functions to give back explaining the situation. Mostly used for the compilation of an intent. All the const
variables have a Symbol
value that is the same as the variable name but only the first letter capitalized.
MINDFul.ReturnCodes.FAIL
— ConstantSignifies generic failure
MINDFul.ReturnCodes.FAIL_CANDIDATEPATHS
— ConstantNot appropriate candidate paths
MINDFul.ReturnCodes.FAIL_DSTOXCADDDROPPORT
— ConstantDestination OXC Add/Drop port not found
MINDFul.ReturnCodes.FAIL_DSTROUTERPORT
— ConstantNo available router ports were found in destination node
MINDFul.ReturnCodes.FAIL_DSTTRANSMDL
— ConstantDestination transmission module not found
MINDFul.ReturnCodes.FAIL_GROOMEDREMOTEINTENTSTATE
— ConstantUsed a remote intent to groom and that remote intent state was not installed or compiled
MINDFul.ReturnCodes.FAIL_OPTICALREACH
— ConstantNo available connection for the given optical reach was found
MINDFul.ReturnCodes.FAIL_OPTICALREACH_OPTINIT
— ConstantNo available connection for the given optical reach, coming from an initiate optical constraint, was found
MINDFul.ReturnCodes.FAIL_OPTICALREACH_OPTINIT_NONODESPLIT
— ConstantNo available connection for the given optical reach, coming from an initiate optical constraint, was found
MINDFul.ReturnCodes.FAIL_OPTICALREACH_OPTINIT_RETRY
— ConstantNo available connection for the given optical reach, coming from an initiate optical constraint, was found even after retrying/recompiling
MINDFul.ReturnCodes.FAIL_SAMEOXCLLI
— ConstantThe same OXC LLI trying to be allocated already exists
MINDFul.ReturnCodes.FAIL_SPECTRUM
— ConstantNo available spectrum was found
MINDFul.ReturnCodes.FAIL_SPECTRUM_OPTINIT
— ConstantNo available connection for the specturm slots, coming from an initiate optical constraint, was found
MINDFul.ReturnCodes.FAIL_SRCOXCADDDROPPORT
— ConstantSource OXC Add/Drop port not found
MINDFul.ReturnCodes.FAIL_SRCROUTERPORT
— ConstantNo available router ports were found in source node
MINDFul.ReturnCodes.FAIL_SRCTRANSMDL
— ConstantSource transmission module not found
MINDFul.ReturnCodes.SUCCESS
— ConstantSignifies everything worked as planned
Non-public interface
MINDFul.KSPFFalg
— ConstantThe keyword for KShorestPathFirstFitCompilation
MINDFul.AbstractIBNFHandler
— TypeA handler or API for IBNFrameworks to talk to each other
MINDFul.AbstractIntent
— Typeabstract type AbstractIntent
A concrete subtype of AbstractIntent
must implement the following methods:
MINDFul.AbstractIntentConstraint
— TypeSpecial requirements for an intent (such as QoS)
MINDFul.AbstractOperationMode
— TypeHow the IBN frameworks operates generally. It has effect of the available compilation algorithms In the future it could also have effect on different intent state machines
MINDFul.AbstractSDNController
— TypeThe abstract type of the SDN controllers
MINDFul.BoolLogState
— TypeStores a vector of the history of the boolean states and their timings
MINDFul.ConnectivityIntent
— Typestruct ConnectivityIntent{T<:MINDFul.AbstractIntentConstraint} <: MINDFul.AbstractIntent
sourcenode::MINDFul.GlobalNode
: Source nodedestinationnode::MINDFul.GlobalNode
: Destination noderate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
: Bandwidth request value (Gbps)constraints::Vector{T} where T<:MINDFul.AbstractIntentConstraint
: Constraints for the Connecivity intent
MINDFul.CrossLightpathIntent
— Typestruct CrossLightpathIntent{C1<:MINDFul.ConnectivityIntent, C2<:MINDFul.ConnectivityIntent} <: MINDFul.AbstractIntent
lightpathconnectivityintent::MINDFul.ConnectivityIntent
remoteconnectivityintent::MINDFul.ConnectivityIntent
The only intent that is being built from its children to be offered as a straight grooming possibility. It is composed by a LightpathIntent
and a RemoteIntent
which are also its children intents.
MINDFul.DefaultOperationMode
— TypeDefault operation mode defined in MINDFul.jl
MINDFul.EdgeProperties
— Typestruct EdgeProperties
distance::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
: The distance of the edge (assumed km)
An immutable description of the edge properties
MINDFul.EdgeView
— Typestruct EdgeView
edgeproperties::MINDFul.EdgeProperties
: TheEdgeProperties
The view of the current edge settings
MINDFul.EndNodeAllocations
— Typestruct EndNodeAllocations
localnode::Int64
routerportindex::Union{Nothing, Int64}
transmissionmoduleviewpoolindex::Union{Nothing, Int64}
transmissionmodesindex::Union{Nothing, Int64}
localnode_input::Union{Nothing, Int64}
adddropport::Union{Nothing, Int64}
Basically an aggregator of RouterPortLLI
, TransmissionModuleLLI
, OXCAddDropBypassSpectrumLLI
in a node.
MINDFul.GlobalNode
— Typestruct GlobalNode
ibnfid::Base.UUID
: IBN Framework idlocalnode::Int64
: Node number
MINDFul.IBNAttributeGraph
— TypeThe graph of the IBN Framework is expressed with this `AttributeGraph`.
Border nodes are assumed to be visible from both sides.
However only the official owner can issue an intent.
MINDFul.IBNFramework
— Typestruct IBNFramework{O<:MINDFul.AbstractOperationMode, S<:MINDFul.AbstractSDNController, T<:(AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView), H<:MINDFul.AbstractIBNFHandler} <: MINDFul.AbstractIBNFHandler
operationmode::MINDFul.AbstractOperationMode
: The operation mode of the IBN frameworkibnfid::Base.UUID
: The id of this IBN Framework instanceintentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
: The intent dag tree that contains all intents (can be disconnected graph)ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
: Single-domain internal graph with border nodes includedibnfhandlers::Vector{H} where H<:MINDFul.AbstractIBNFHandler
: Other IBN Frameworks handlessdncontroller::MINDFul.AbstractSDNController
: SDN controller handle
MINDFul.IBNFramework
— MethodIBNFramework(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
) -> MINDFul.IBNFramework{MINDFul.DefaultOperationMode, MINDFul.SDNdummy, T, H} where {T<:(AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView), H<:(MINDFul.IBNFramework{MINDFul.DefaultOperationMode, MINDFul.SDNdummy})}
The most default construct with abstract type of IBN handlers
MINDFul.IBNFramework
— MethodIBNFramework(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
ibnfhandlers::Array{H<:MINDFul.AbstractIBNFHandler, 1}
) -> MINDFul.IBNFramework{MINDFul.DefaultOperationMode, MINDFul.SDNdummy}
Constructor that specify IBNFHandlers to make it potentially type stable
MINDFul.IBNIssuer
— Typestruct IBNIssuer <: MINDFul.IntentIssuer
Intent is issued by an IBN Framework domain
ibnfid::Base.UUID
: the id of theIBNF
issued the intentidagnodeid::Base.UUID
: The id of the intent node in the DAG. The issuer of this intent node points back in thisIBNIssuer
instance.
MINDFul.IntentCompilationAlgorithm
— TypeInstances of this specify how to compile the intent
MINDFul.IntentDAG
— TypeAn AttributeGraph
graph used as an intent Directed Acyclic Graph (DAG)
MINDFul.IntentDAGInfo
— Typemutable struct IntentDAGInfo
intentcounter::Int64
: The counter of the number of intents to give increasing ids to intentsinstalledlightpaths::Dict{Base.UUID, MINDFul.LightpathRepresentation}
: Logical representation of the installed intents as lightpaths (must be direct parent of the LLIs)
MINDFul.IntentDAGInfo
— MethodIntentDAGInfo() -> MINDFul.IntentDAGInfo
Empty constructor
MINDFul.IntentDAGNode
— Typestruct IntentDAGNode{I<:MINDFul.AbstractIntent, II<:MINDFul.IntentIssuer}
intent::MINDFul.AbstractIntent
: The intent itselfidagnodeid::Base.UUID
: The id of the intent w.r.t. the intent DAG it belongsintentissuer::MINDFul.IntentIssuer
: The intent issuerlogstate::Vector{Tuple{Dates.DateTime, MINDFul.IntentState.T}}
: The history of states of the intent with the last being the current state
MINDFul.IntentIssuer
— TypeCharacterizes the entity issuing an intent
MINDFul.IntentLogState
— TypeIntentLogState(
) -> Vector{Tuple{Dates.DateTime, MINDFul.IntentState.T}}
IntentLogState(
intentstate::MINDFul.IntentState.T
) -> Vector{Tuple{Dates.DateTime, MINDFul.IntentState.T}}
IntentLogState(
intentstate::MINDFul.IntentState.T,
logtime::Dates.DateTime
) -> Vector{Tuple{Dates.DateTime, MINDFul.IntentState.T}}
MINDFul.IntentLogState
— TypeStores a vector of the history of the intent states and their timings
MINDFul.KShorestPathFirstFitCompilation
— Typestruct KShorestPathFirstFitCompilation <: MINDFul.IntentCompilationAlgorithm
candidatepathsnum::Int64
: How many k paths to check
MINDFul.LightpathIntent
— Typestruct LightpathIntent <: MINDFul.AbstractIntent
sourcenodeallocations::MINDFul.EndNodeAllocations
destinationnodeallocations::MINDFul.EndNodeAllocations
spectrumslotsrange::UnitRange{Int64}
path::Vector{Int64}
Basicaly an aggregator of LowLevelIntents
. One lightpath intent can translate trivially to LowLevelIntents. It's core use is for grooming, where several Connectivity Intents can be linked to one LightpathIntent If the field does not apply, put 0
MINDFul.LightpathRepresentation
— Typestruct LightpathRepresentation
path::Vector{Int64}
: The nodes comprising the lightpathstartsoptically::Bool
:true
if it starts optically (due toOpticalInitiateConstraint
) orfalse
otherwiseterminatessoptically::Bool
:true
if it terminates optically (due toOpticalTerminateConstraint
) orfalse
otherwisetotalbandwidth::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
: total bandwidth that can be allocateddestinationnode::MINDFul.GlobalNode
: final node of the signal entering this lightpath. This could be a GlobalNode intrnally in the domain for a single lightpath. Or an external GlobalNode in a different domain for a cross-lightpath. In the second case, the signal might go over different lightpaths to reach the destination.
Represents an implementation of a ConnectivityIntent as a lightpath
MINDFul.LocalNode
— TypeSignifies a local node notation as a single integer
MINDFul.LowLevelIntent
— Typeabstract type LowLevelIntent <: MINDFul.AbstractIntent
An abstract subtype of AbstractIntent
notating device-level intents and should return is_low_level_intent
to be true
MINDFul.MachineGenerated
— TypeIntent is generated automatically by the IBN Framework
MINDFul.NetworkOperator
— TypeIntent issued directly by the network operator, i.e., a user intent
MINDFul.NoGroomingConstraint
— Typestruct NoGroomingConstraint <: MINDFul.AbstractIntentConstraint
Constraint that requires the intent is compiled without use of grooming techniques.
MINDFul.NodeProperties
— Typestruct NodeProperties
localnode::Int64
globalnode::MINDFul.GlobalNode
latitude::Float64
longitude::Float64
inneighbors::Vector{Int64}
: The list of neighbohrs coming inoutneighbors::Vector{Int64}
: The list of neighbohrs going out
An immutable description of the node properties
MINDFul.NodeView
— Typestruct NodeView{R<:MINDFul.RouterView, O<:MINDFul.OXCView, T<:MINDFul.TransmissionModuleView} <: MINDFul.ReservableResourceView
nodeproperties::MINDFul.NodeProperties
: TheNodeProperties
routerview::Union{Nothing, R} where R<:MINDFul.RouterView
: The router in useoxcview::Union{Nothing, O} where O<:MINDFul.OXCView
: The OXC in usetransmissionmoduleviewpool::Union{Nothing, Vector{T}} where T<:MINDFul.TransmissionModuleView
: The transmission modules containedtransmissionmodulereservations::Union{Nothing, Dict{Base.UUID, MINDFul.TransmissionModuleLLI}}
: intent reservation of the transmission modulestransmissionmodulestaged::Union{Nothing, Set{MINDFul.TransmissionModuleLLI}}
: intent staged of the transmission modules
The view of the current node settings Reservables resources reservations are nothing
if it represents a border node.
MINDFul.OXCAddDropBypassSpectrumLLI
— Typestruct OXCAddDropBypassSpectrumLLI <: MINDFul.LowLevelIntent
localnode::Int64
: Target nodelocalnode_input::Int64
: The node in graph entering the OXC (or0
if invalid)adddropport::Int64
: The port index adding or dropping an optical signal (or0
if invalid)localnode_output::Int64
: The node in graph exiting the OXC (or0
if invalid)spectrumslotsrange::UnitRange{Int64}
: The spectrum range allocated 1-based indexed
A value-based interpretation of (input
, adddrop
, output
). At least one of the 3 elements must be 0
. (x, 0, y)
means optical bypass from the localnode x
to the localnode y
(0, x, y)
means adding an optical signal from add port x
going to the localnode y
(x, y, 0)
means droping an optical signal from the localnode x
to the drop port y
(0, x, 0)
mean that an add/drop allocation port is only reserved (is needed on top for an add/drop signal)
MINDFul.OXCView
— Typestruct OXCView{O<:MINDFul.AbstractOXC} <: MINDFul.ReservableResourceView
oxc::MINDFul.AbstractOXC
: the underlying OXCadddropportnumber::Int64
: The number of add/drop ports in OXCswitchreservations::Dict{Base.UUID, MINDFul.OXCAddDropBypassSpectrumLLI}
: The intent reservations together with the configurationswitchstaged::Set{MINDFul.OXCAddDropBypassSpectrumLLI}
: The intent staged together with the configurationlinkspectrumavailabilities::Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Bool}}
: Link spectrum availability total view in sync withswitchreservations
. A vector showing the availability of the spectrum slots.true
for available andfalse
for reserved. The vector views should be the same with the ones on the opposite OXC view.
linkstates::Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Tuple{Dates.DateTime, Bool}}}
: History information of the status of the connected links (working or not). The last element is the current state.
A view of a OXC. This OXC view is also a view to the links connecting to the OXC. Since links are not devices under control, MINDFul does not model them directly.
MINDFul.OpticalInitiateConstraint
— Typestruct OpticalInitiateConstraint <: MINDFul.AbstractIntentConstraint
Constraint that requires the intent to initiate optically. It's combined with an (@ref)[OpticalTerminateConstraint
] before. It contains some requirements for the connection to work out.
globalnode_input::MINDFul.GlobalNode
: The incoming border node entering the OXCspectrumslotsrange::UnitRange{Int64}
: The spectrum range allocated 1-based indexedopticalreach::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
: the remaining optical reach to usetransmissionmodulecompat::MINDFul.TransmissionModuleCompatibility
: Requirements for termination in the electical layer
MINDFul.OpticalTerminateConstraint
— Typestruct OpticalTerminateConstraint <: MINDFul.AbstractIntentConstraint
Constraint that requires the intent to terminate optically one node before the destination. It's combined with an (@ref)[OpticalInitiateConstraint
] after.
finaldestination::MINDFul.GlobalNode
: The final destination (intra domain or inter-domain) Used primarily for grooming cross lightpaths.
MINDFul.RemoteIBNFHandler
— Typestruct RemoteIBNFHandler <: MINDFul.AbstractIBNFHandler
Fabian Gobantes implementation. Should consist of basic information all handlers should have (e.g. ibnfid
). And a parametric type specific to the protocol used.
struct HandlerProperties
ibnfid::UUID
# ...
end
struct IBNFHTTP2Comm <: AbstractIBNFComm
# example
end
struct IBNFSameProcess{T<:IBNFramework} <: AbstractIBNFComm
# this can be the new dummy and substitute the current dummy implementation
ibng::T
end
struct RemoteIBNFHandler{T<:AbstractIBNFComm} <: AbstractIBNFHandler
handlerproperties::HandlerProperties
ibnfcomm::T
end
MINDFul.RemoteIntent
— Typestruct RemoteIntent{I<:MINDFul.AbstractIntent} <: MINDFul.AbstractIntent
ibnfid::Base.UUID
: The id of the remote IBN frameworkidagnodeid::Base.UUID
: The dag node id of the remote IBN frameworkintent::MINDFul.AbstractIntent
: The intent to be transferredisinitiator::Bool
:true
if the intent originates here andfalse
otherwise
MINDFul.ReservableResourceView
— TypeThe following functions should be implemented for subtypes:
getreservations(subtype::ReservableResourceView)::Set{T}
canreserve(subtype::ReservableResourceView, reservation::T)::Bool
The following default functions exist that should already work
reserve!(subtype::ReservableResourceView, dagnodeid::UUID, reservation::T; checkfirst::Bool=true)::Bool
unreserve!(subtype::ReservableResourceView, dagnodeid::UUID)::Bool
insertreservation!(subtype::ReservableResourceView, dagnodeid::UUID, reservation::T)
deletereservation!(subtype::ReservableResourceView, dagnodeid::UUID)
MINDFul.RouterPort
— Typestruct RouterPort
A representation of a router port.
rate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
MINDFul.RouterPortLLI
— Typestruct RouterPortLLI <: MINDFul.LowLevelIntent
localnode::Int64
: Target noderouterportindex::Int64
: The router port index to be reserved
MINDFul.RouterView
— Typestruct RouterView{R<:MINDFul.AbstractRouter} <: MINDFul.ReservableResourceView
A view of a router with several ports.
router::MINDFul.AbstractRouter
: The underlying routerports::Vector{MINDFul.RouterPort}
: number of ports in routerportreservations::Dict{Base.UUID, MINDFul.RouterPortLLI}
: The intent reservations together with the low level intent of reserved portportstaged::Set{MINDFul.RouterPortLLI}
: The intent reservations together with the low level intent of a staged port
MINDFul.SDNdummy
— Typestruct SDNdummy <: MINDFul.AbstractSDNController
MINDFul.TransmissionMode
— Typestruct TransmissionMode
Represents a transmission mode. A transponder, if flexible, might support many of them.
opticalreach::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
: Optical reach in kilometersrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
: rate in Gbpsspectrumslotsneeded::Int64
: Number of 12.5 GHz frequency slots needed
MINDFul.TransmissionModuleCompatibility
— Typestruct TransmissionModuleCompatibility
rate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
: The bandwidth of the connectionspectrumslotsneeded::Int64
: Number of 12.5Gz frequency slots neededname::String
: descriptive name of the transmission module
Describe what requirements are needed to establish transmission module end-to-end connection Modulation should be here but it's not. Dissagregetation data should be here but it's not. Both are covered by the name
which must be equal in both ends
MINDFul.TransmissionModuleIntent
— Typestruct TransmissionModuleIntent <: MINDFul.AbstractIntent
Contains the requirements to compile down to TransmissionModuleLLI
rate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
: The data rate requierementopticalreach::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
: Optical reach requirements in kilometresspectrumslotsneeded::Int64
: Number of 12.5 GHz frequency slots needed
MINDFul.TransmissionModuleLLI
— Typestruct TransmissionModuleLLI <: MINDFul.LowLevelIntent
localnode::Int64
: Target nodetransmissionmoduleviewpoolindex::Int64
: The index of the transmission module pool to be reservedtransmissionmodesindex::Int64
: The selected mode of the transmission module.0
means nothing is still selected. Non elastic modules can have only1
.routerportindex::Int64
: The router port index to be connectedadddropport::Int64
: The port index adding or dropping the optical signal to be connected
MINDFul.TransmissionModuleView
— Typestruct TransmissionModuleView{T<:MINDFul.AbstractTransmissionModule}
transmissionmodule::MINDFul.AbstractTransmissionModule
: The underlying transmission modulename::String
: descriptive name of the transmission moduletransmissionmodes::Vector{MINDFul.TransmissionMode}
: operating transmission modescost::Float64
: Cost of the transmission module (in unit costs)
A view of a transmission module.
Base.show
— Methodshow(io::IO, ibnf::MINDFul.IBNFramework)
MINDFul._rec_deletenodesedgesuntilgroomingfound!
— Method_rec_deletenodesedgesuntilgroomingfound!(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID,
idagnodeid2dlt::Vector{Base.UUID}
) -> Bool
Returns true if grooming is found and the idagnodeid
to delete
MINDFul.addidagedge!
— Methodaddidagedge!(
ibnf::MINDFul.IBNFramework,
fromnode::Base.UUID,
tonode::Base.UUID;
offsettime
) -> Bool
MINDFul.addidagnode!
— Methodaddidagnode!(
ibnf::MINDFul.IBNFramework,
intent::MINDFul.AbstractIntent;
parentids,
childids,
intentissuer,
offsettime
) -> MINDFul.IntentDAGNode{I, MINDFul.MachineGenerated} where I<:MINDFul.AbstractIntent
Return the IntentDAGNode
MINDFul.addidagnode!
— Methodaddidagnode!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode;
parentids,
childids,
intentissuer
) -> Base.UUID
Return the UUID
MINDFul.addkeywordparameters!
— Methodaddkeywordparameters!(
funcexpr::Expr,
keywordparexprs::Expr...
) -> Expr
MINDFul.addtoinstalledlightpaths!
— Methodaddtoinstalledlightpaths!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent}
) -> Bool
If idagnode
represents a direct parent of LLIs that are a lightpath, add representation to the IntentDAGInfo Return true
if done. Otherwise false
MINDFul.addtoinstalledlightpaths!
— Methodaddtoinstalledlightpaths!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:Union{MINDFul.LightpathIntent, MINDFul.CrossLightpathIntent}}
) -> Bool
If idagnode
represents a direct parent of LLIs that are a lightpath, add representation to the IntentDAGInfo Return true
if done. Otherwise false
MINDFul.allocate_oxcspectrumslots
— Methodallocate_oxcspectrumslots(
ibnf::MINDFul.IBNFramework,
dagnodeid::Base.UUID,
localnode::Int64
) -> Bool
MINDFul.allocate_transmissionmodule
— Methodallocate_transmissionmodule(
ibnf::MINDFul.IBNFramework,
dagnodeid::Base.UUID,
localnode::Int64,
transmissionmodulereservationentry::MINDFul.TransmissionModuleLLI
)
MINDFul.aretransmissionmodulescompatible
— Methodaretransmissionmodulescompatible(
tmv1::MINDFul.TransmissionModuleView,
tmv2::MINDFul.TransmissionModuleView
) -> Bool
MINDFul.canreserve
— Methodcanreserve(
sdn::MINDFul.AbstractSDNController,
nodeview::MINDFul.NodeView,
transmissionmodulelli::MINDFul.TransmissionModuleLLI;
verbose
) -> Bool
Set verbose=true
to see where the reservation fails
MINDFul.canreserve
— Methodcanreserve(
sdn::MINDFul.AbstractSDNController,
oxcview::MINDFul.OXCView,
oxcswitchreservationentry::MINDFul.OXCAddDropBypassSpectrumLLI;
verbose
) -> Bool
Check whether
- add/drop port exists
- add/drop port already in use
- spectrum in fibers in use
Set verbose=true
to see where the reservation fails
MINDFul.canreserve
— Methodcanreserve(
sdn::MINDFul.AbstractSDNController,
routerview::MINDFul.RouterView,
routerportlli::MINDFul.RouterPortLLI;
verbose
) -> Bool
Check if router port exists and whether it is already used
Set verbose=true
to see where the reservation fails
MINDFul.chooseoxcadddropport_first
— Methodchooseoxcadddropport_first(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
node::Int64
) -> Union{Nothing, Int64}
Return the uniformly random available oxc add/drop port and nothing
if none found
MINDFul.choosespectrum_firstfit
— Methodchoosespectrum_firstfit(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
path::Vector{Int64},
demandslotsneeded::Int64
) -> Union{Nothing, Int64}
MINDFul.compilegroomingpossibility
— Methodcompilegroomingpossibility(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
groomingpossibility::Vector{Union{Base.UUID, Graphs.SimpleGraphs.SimpleEdge{Int64}}},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
intradomainalgfun::Function;
verbose,
offsettime
) -> Symbol
Returns ReturnCode on whether it managed to compile the grooming possibility passed.
MINDFul.compileintenttemplate!
— Methodcompileintenttemplate!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm;
verbose,
intradomainalgfun,
externaldomainalgkeyword,
prioritizegrooming,
prioritizesplitnodes,
prioritizesplitbordernodes,
offsettime
)
A template compilation function that can be extended
Pass in the intent compilation algorithm intentcompilationalgorithm
Give in the following hook functions:
intradomainalgfun
is used as compilation algorithm for the intents handled internally.
It should return a Symbol
as a return code. Common return codes are found in MINDFul.ReturnCodes
intradomainalgfun(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm
; datetime::DateTime
) -> Symbol
prioritizesplitnodes
is called when optical reach is not enough to have a lightpath end-to-end to serve the intent and a path to split was already selected.
The node selected will break the intent into two pieces with the node standing in between. This function should return a vector of GlobalNode
s with decreasing priority of which node should be chosen.
prioritizesplitnodes(
ibnf::IBNFramework,
idagnode::IntentDAGNode,
intentcompilationalgorithm::IntentCompilationAlgorithm,
) -> Vector{GlobalNode}
prioritizesplitbordernodes
is called to select the border node to work as the source node for the delegated intent in a neighboring domain.
This function should return a vector of GlobalNode
s with decreasing priority of which node should be chosen.
prioritizesplitbordernodes(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm)
) -> Vector{GlobalNode}
MINDFul.consecutivelightpathsidx
— MethodPass a `Vector{Vector{Int}}` where `Int` are the nodes of each lightpath.
Return a `Vector{Vector{Int}}` where `Int` is the index of the contained lightpaths.
if `startingnode = true`, `node` is starting else is ending.
MINDFul.construct_BoolLogState
— Functionconstruct_BoolLogState(
) -> Vector{Tuple{Dates.DateTime, Bool}}
construct_BoolLogState(
initialstate
) -> Vector{T} where T<:Tuple{Dates.DateTime, Any}
Implementing BoolLogState() is type piracy.
MINDFul.constructfromdict
— Methodconstructfromdict(
_::Type{T},
dict::Dict{Symbol},
dict2::Dict{Symbol}
) -> MINDFul.NodeProperties
Convenience function to construct any struct of type T
by passing a Dict
corresponding to the fields needed. A further dict dict2
is searched for data.
MINDFul.constructfromdict
— Methodconstructfromdict(
_::Type{T},
dict::Dict{Symbol}
) -> MINDFul.EdgeProperties
using Core: ReturnNode
Convenience function to construct any struct of type T
by passing a Dict
corresponding to the fields needed.
MINDFul.deallocate_transmissionmodule
— Methoddeallocate_transmissionmodule(
ibnf::MINDFul.IBNFramework,
localnode::Int64,
transmissionmodulereservationentry::MINDFul.TransmissionModuleLLI
) -> Bool
MINDFul.default_OXCview
— Methoddefault_OXCview(
nodeproperties::MINDFul.NodeProperties,
spectrumslots::Int64
) -> MINDFul.OXCView{MINDFul.OXCDummy}
MINDFul.deletenodesedgesuntilgroomingfound
— Methoddeletenodesedgesuntilgroomingfound(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
)
Delete all nodes and edges until the grooming node is found. If no grooming node is found, delete nothing. Start from idagnodeid
MINDFul.deletereservation!
— Methoddeletereservation!(
sdn::MINDFul.AbstractSDNController,
resourceview::MINDFul.ReservableResourceView,
dagnodeid::Base.UUID;
verbose
)
MINDFul.deletereservationhook!
— Methoddeletereservationhook!(
sdn::MINDFul.AbstractSDNController,
oxcview::MINDFul.OXCView,
dagnodeid::Base.UUID;
verbose
) -> Symbol
MINDFul.deletereservationhook!
— Methoddeletereservationhook!(
sdn::MINDFul.AbstractSDNController,
resourceview::MINDFul.ReservableResourceView,
dagnodeid::Base.UUID;
verbose
) -> Symbol
Implement this function to do custom actions per specific ReservableResourceView
MINDFul.displayavailablecompilationalgorithmsinfo
— Methoddisplayavailablecompilationalgorithmsinfo(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler
)
MINDFul.edgeify
— Methodedgeify(
path::Vector{Int64}
) -> Vector{Graphs.SimpleGraphs.SimpleEdge{Int64}}
MINDFul.emptyaggraphwithnewuuid
— Methodemptyaggraphwithnewuuid(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Array{T<:MINDFul.NodeView, 1}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID},
uuid::Base.UUID
) -> AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
MINDFul.findconsecutiveblocks
— Methodfindconsecutiveblocks(
predicate::Function,
vec::Vector
) -> Vector{Tuple{Int64, Int64}}
Return a Vector{Tuple{Int, Int}} with the consecutive blocks that satisfy function predicate
. The first element of the tuple is the starting index and the second the last index of the block.
MINDFul.firstfit
— Methodfirstfit(
boolvec::AbstractVector{Bool},
lenghrequire::Int64
) -> Union{Nothing, Int64}
Finds first contiguous slot range of length lengthrequire
that satisfies the boolvec
. Return the starting index of the range or nothing
if none available
MINDFul.generatelightpathoxcadddropbypassspectrumlli
— Methodgeneratelightpathoxcadddropbypassspectrumlli(
path::Vector{Int64},
spectrumslotsrange::UnitRange{Int64};
sourceadddropport,
opticalinitincomingnode,
destadddropport
) -> Vector{MINDFul.OXCAddDropBypassSpectrumLLI}
Return a list of (@ref)[OXCAddDropBypassSpectrumLLI] that constitute a lightpath. According to the arguments a "starting lightpath", an "ending lightpath", or a "lightpath segment" can be created. The arguments are the following:
sourceadddropport
:nothing
for a starting lightpath and anInteger
denating the add/drop port otherwiseopticalinitincomingnode
: the (@ref)[LocalNode] denoting the incoming optical connection from the specified node for a starting lightpath. Set tonothing
if not a starting lightpathdestadddropport
:nothing
for an ending lightpath and anInteger
denating the add/drop port otherwise
Note: not both sourceadddropport
and opticalinitincomingnode
can be nothing or have a values at the same time.
MINDFul.getafterlliidx
— Methodgetafterlliidx(
ibnf::MINDFul.IBNFramework,
conintent::MINDFul.ConnectivityIntent,
llis,
oxclli::MINDFul.OXCAddDropBypassSpectrumLLI;
verbose
) -> Any
Return all next logical low level intent indices from llis
given that now signal is positioned in OXCAddDropBypassSpectrumLLI
such that the conintent
is satisfied. Return an empty vector if no logical next is found.
MINDFul.getafterlliidx
— Methodgetafterlliidx(
ibnf::MINDFul.IBNFramework,
conintent::MINDFul.ConnectivityIntent,
llis,
rplli::MINDFul.RouterPortLLI;
verbose
) -> Any
Return all next logical low level intent indices from llis
given that now signal is positioned in RouterPortLLI
such that the conintent
is satisfied. Return an empty vector if no logical next is found.
MINDFul.getafterlliidx
— Methodgetafterlliidx(
ibnf::MINDFul.IBNFramework,
conintent::MINDFul.ConnectivityIntent,
llis,
tmlli::MINDFul.TransmissionModuleLLI;
verbose
) -> Any
Return all next logical low level intent indices from llis
given that now signal is positioned in TransmissionModuleLLI
such that the conintent
is satisfied. Return an empty vector if no logical next is found.
MINDFul.getavailabletransmissionmoduleviewindex
— Methodgetavailabletransmissionmoduleviewindex(
nodeview::MINDFul.NodeView
) -> Vector{Int64}
MINDFul.getcandidatepathsnum
— Methodgetcandidatepathsnum(
kspffcomp::MINDFul.KShorestPathFirstFitCompilation
) -> Int64
MINDFul.getcompilationalgorithmkeyword
— Methodgetcompilationalgorithmkeyword(
_::Type{MINDFul.KShorestPathFirstFitCompilation}
) -> Symbol
Give back the symbol mapped to the algorithm
MINDFul.getcompilationalgorithmkeyword
— Methodgetcompilationalgorithmkeyword(
c::MINDFul.IntentCompilationAlgorithm
) -> Symbol
Give back the symbol mapped to the algorithm
MINDFul.getcompilationalgorithmtype
— Methodgetcompilationalgorithmtype(
s::Val{:kspff}
) -> Type{MINDFul.KShorestPathFirstFitCompilation}
Give back the algorithm mapped to the symbol
MINDFul.getcurrentlinkstate
— Methodgetcurrentlinkstate(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
edge::Graphs.SimpleGraphs.SimpleEdge;
checkfirst,
verbose
) -> Union{Nothing, Bool, Symbol}
Same as getcurrentlinkstate(ibnf::IBNFramework)
but doesn't send a request to other domains.
MINDFul.getcurrentlinkstate
— Methodgetcurrentlinkstate(
ibnf::MINDFul.IBNFramework,
edge::Graphs.SimpleGraphs.SimpleEdge;
checkfirst,
verbose
) -> Union{Nothing, Bool, Symbol}
MINDFul.getcurrentlinkstate
— Methodgetcurrentlinkstate(
oxcview::MINDFul.OXCView,
ed::Graphs.SimpleGraphs.SimpleEdge
) -> Bool
MINDFul.getdefaultcompilationalgorithm
— Methodgetdefaultcompilationalgorithm(
ibnff::MINDFul.IBNFramework
) -> Symbol
Can overload for different Operation Modes.
MINDFul.getdefaultcompilationalgorithmargs
— Methodgetdefaultcompilationalgorithmargs(
s::Val{:kspff}
) -> Tuple{Int64}
MINDFul.getdestinationnodeallocations
— Methodgetdestinationnodeallocations(
lpintent::MINDFul.LightpathIntent
) -> MINDFul.EndNodeAllocations
MINDFul.getfirst
— Methodgetfirst(predicate::Function, ar::AbstractArray) -> Any
Returns the element is predicate
is satisfied or nothing
otherwise.
MINDFul.getfirstavailableoxcadddropport
— Methodgetfirstavailableoxcadddropport(nodeview::MINDFul.NodeView)
MINDFul.getfirstavailableoxcadddropport
— Methodgetfirstavailableoxcadddropport(oxcview::MINDFul.OXCView)
Return the first available oxc add/drop port and nothing
if none found
MINDFul.getfirstavailablerouterportindex
— Methodgetfirstavailablerouterportindex(nodeview::MINDFul.NodeView)
MINDFul.getfirstavailablerouterportindex
— Methodgetfirstavailablerouterportindex(
routerview::MINDFul.RouterView
)
Return the first available router port index and nothing
if non available.
MINDFul.getfirstcompatibletransmoduleidxandmodeidx
— Methodgetfirstcompatibletransmoduleidxandmodeidx(
transmissionmoduleviewpool::Vector{<:MINDFul.TransmissionModuleView},
availtransmdlidxs::Vector{Int64},
transmissionmodulecompat::MINDFul.TransmissionModuleCompatibility
) -> Union{Nothing, Tuple{Int64, Int64}}
Return a integer tuple (Int, Int)
denoting the first available and compatible transmission module index and its transmission mode index. If non found return nothing
.
MINDFul.getidaginfo
— Methodgetidaginfo(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> MINDFul.IntentDAGInfo
MINDFul.getidagnextuuidcounter
— Methodgetidagnextuuidcounter(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> Base.UUID
MINDFul.getidagnode
— Methodgetidagnode(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
dagnodeid::Base.UUID
) -> MINDFul.IntentDAGNode
MINDFul.getidagnodechildren
— Methodgetidagnodechildren(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
) -> Vector{MINDFul.IntentDAGNode}
MINDFul.getidagnodechildren
— Methodgetidagnodechildren(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnode::MINDFul.IntentDAGNode
) -> Vector{MINDFul.IntentDAGNode}
MINDFul.getidagnodedescendants
— Methodgetidagnodedescendants(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID;
exclusive,
includeroot,
parentsfirst
) -> Vector{MINDFul.IntentDAGNode}
Get all descendants of DAG dag
starting from node idagnodeid
Set exclusive=true
to get nodes that have idagnodeid
as the only ancestor Set parentsfirst=true
to get the upper level children first and false to get the leafs first.
MINDFul.getidagnodeidx
— Methodgetidagnodeidx(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
dagnodeid::Base.UUID
) -> Int64
Get the vertex index of the intent DAG node with id dagnodeid
. Errors if UUID doesn't exist. It's slow: maybe keep a dict/table ?
MINDFul.getidagnodeidxsconnected
— Methodgetidagnodeidxsconnected(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
) -> Vector{Int64}
Get all connected nodes of DAG dag
starting from node idagnodeid
. Return as node indices of the graph.
MINDFul.getidagnodeidxsdescendants
— Methodgetidagnodeidxsdescendants(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID;
exclusive,
includeroot
) -> Vector{Int64}
Get all descendants of DAG dag
starting from node idagnodeid
. Return as node indices of the graph. Set exclusive=true
to get nodes that have idagnodeid
as the only ancestor
MINDFul.getidagnodeleafs
— Methodgetidagnodeleafs(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID;
exclusive
) -> Vector{MINDFul.IntentDAGNode}
Get the leafs of DAG dag
starting from node idn
. Set exclusive=true
to get nodes that have idn
as the only ancestor
MINDFul.getidagnodellis
— Methodgetidagnodellis(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID;
exclusive
) -> Vector{MINDFul.IntentDAGNode}
Get all the Low Level Intents that are leafs of idagnodeid
Set exclusive=true
to get nodes that have idn
as the only ancestor
MINDFul.getidagnodellis
— Methodgetidagnodellis(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> Vector{MINDFul.IntentDAGNode}
Get all the Low Level Intents that exist on the DAG
MINDFul.getidagnodeparents
— Methodgetidagnodeparents(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
) -> Vector{MINDFul.IntentDAGNode}
MINDFul.getidagnodeparents
— Methodgetidagnodeparents(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnode::MINDFul.IntentDAGNode
) -> Vector{MINDFul.IntentDAGNode}
MINDFul.getidagnoderoots
— Methodgetidagnoderoots(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
) -> Vector{MINDFul.IntentDAGNode}
Get the roots of DAG dag
starting from node idn
.
MINDFul.getidagnodes
— Methodgetidagnodes(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> Vector{MINDFul.IntentDAGNode}
MINDFul.getinstalledlightpaths
— Methodgetinstalledlightpaths(
intentdaginfo::MINDFul.IntentDAGInfo
) -> Dict{Base.UUID, MINDFul.LightpathRepresentation}
MINDFul.getintentissuer
— Methodgetintentissuer(
idagnode::MINDFul.IntentDAGNode
) -> MINDFul.IntentIssuer
MINDFul.getlightpathconnectivityintent
— Methodgetlightpathconnectivityintent(
clpi::MINDFul.CrossLightpathIntent
) -> MINDFul.ConnectivityIntent
MINDFul.getlinkstates
— Methodgetlinkstates(
ibnf::MINDFul.IBNFramework,
edge::Graphs.SimpleGraphs.SimpleEdge;
checkfirst,
verbose
) -> Union{Nothing, Symbol, Vector{Tuple{Dates.DateTime, Bool}}}
MINDFul.getlinkstates
— Methodgetlinkstates(
oxcview::MINDFul.OXCView,
ed::Graphs.SimpleGraphs.SimpleEdge
) -> Vector{Tuple{Dates.DateTime, Bool}}
MINDFul.getlinkstates
— Methodgetlinkstates(
oxcview::MINDFul.OXCView
) -> Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Tuple{Dates.DateTime, Bool}}}
MINDFul.getlocalnodenum
— Methodgetlocalnodenum(ibnf::MINDFul.IBNFramework) -> Any
Return the number of local nodes, i.e. not border nodes.
MINDFul.getlowestratetransmissionmode
— Methodgetlowestratetransmissionmode(
transmissionmoduleview::MINDFul.TransmissionModuleView,
demandrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}},
demanddistance::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
) -> Union{Nothing, Int64}
Return the index with the lowest GBPS rate that can get deployed for the given demand rate and distance. If non is find return nothing
.
MINDFul.getname
— Methodgetname(s) -> Any
MINDFul.getnetworkoperatoridagnodes
— Methodgetnetworkoperatoridagnodes(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> Vector{MINDFul.IntentDAGNode}
Request topology information
MINDFul.getnodeindex
— Methodgetnodeindex(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
globalnode::MINDFul.GlobalNode
) -> Union{Nothing, Int64}
Return the index given the global representation. Return nothing
if not found
MINDFul.getnumberofparameters
— Methodgetnumberofparameters(
_::MINDFul.IntentCompilationAlgorithm
) -> Int64
MINDFul.getnumberofparameters
— Methodgetnumberofparameters(
_::Type{T<:MINDFul.IntentCompilationAlgorithm}
) -> Int64
MINDFul.getpath
— Methodgetpath(lpintent::MINDFul.LightpathIntent) -> Vector{Int64}
MINDFul.getpath
— Methodgetpath(
lpr::MINDFul.LightpathRepresentation
) -> Vector{Int64}
MINDFul.getpathdistance
— Methodgetpathdistance(
ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
path::Vector{Int64}
) -> Any
MINDFul.getremoteconnectivityintent
— Methodgetremoteconnectivityintent(
clpi::MINDFul.CrossLightpathIntent
) -> MINDFul.ConnectivityIntent
MINDFul.getresidualbandwidth
— Methodgetresidualbandwidth(
ibnf::MINDFul.IBNFramework,
lightpathuuid::Base.UUID,
residualbandwidth::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}};
onlyinstalled
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
Return how much bandwidth is left unused in the lightpath
MINDFul.getresidualbandwidth
— Methodgetresidualbandwidth(
ibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
Return 0 GBPS if invalid intent
MINDFul.getrouterlli
— Methodgetrouterlli(
ena::MINDFul.EndNodeAllocations
) -> MINDFul.RouterPortLLI
MINDFul.getrouterport
— Methodgetrouterport(
ibnf::MINDFul.IBNFramework,
intent::MINDFul.RouterPortLLI
) -> MINDFul.RouterPort
Get the router port
MINDFul.getrouterport
— Methodgetrouterport(s::MINDFul.RouterView, idx) -> Any
MINDFul.getrouterportrate
— Methodgetrouterportrate(
ibnf::MINDFul.IBNFramework,
intent::MINDFul.RouterPortLLI
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
Get the router port
MINDFul.getrouterports
— Methodgetrouterports(
s::MINDFul.RouterView
) -> Vector{MINDFul.RouterPort}
MINDFul.getsourcenodeallocations
— Methodgetsourcenodeallocations(
lpintent::MINDFul.LightpathIntent
) -> MINDFul.EndNodeAllocations
MINDFul.getstaged
— Methodgetstaged(
nodeview::MINDFul.NodeView
) -> Union{Nothing, Set{MINDFul.TransmissionModuleLLI}}
MINDFul.getstaged
— Methodgetstaged(
oxcview::MINDFul.OXCView
) -> Set{MINDFul.OXCAddDropBypassSpectrumLLI}
MINDFul.getstaged
— Methodgetstaged(
routerview::MINDFul.RouterView
) -> Set{MINDFul.RouterPortLLI}
MINDFul.getstartsoptically
— Methodgetstartsoptically(
lpr::MINDFul.LightpathRepresentation
) -> Bool
MINDFul.getterminatessoptically
— Methodgetterminatessoptically(
lpr::MINDFul.LightpathRepresentation
) -> Bool
MINDFul.gettotalbandwidth
— Methodgettotalbandwidth(
lpr::MINDFul.LightpathRepresentation
) -> Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
MINDFul.gettrasmissionmodulelli
— Methodgettrasmissionmodulelli(
ena::MINDFul.EndNodeAllocations
) -> MINDFul.TransmissionModuleLLI
MINDFul.hasidagnodechildren
— Methodhasidagnodechildren(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
) -> Bool
MINDFul.hasidagnodechildren
— Methodhasidagnodechildren(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnode::MINDFul.IntentDAGNode
) -> Bool
MINDFul.hasidagnodeparents
— Methodhasidagnodeparents(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnodeid::Base.UUID
) -> Bool
MINDFul.hasidagnodeparents
— Methodhasidagnodeparents(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
idagnode::MINDFul.IntentDAGNode
) -> Bool
MINDFul.increaseidagcounter!
— Methodincreaseidagcounter!(
intentdag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
) -> Int64
MINDFul.insertreservation!
— Methodinsertreservation!(
sdn::MINDFul.AbstractSDNController,
resourceview::MINDFul.ReservableResourceView,
dagnodeid::Base.UUID,
reservationdescription;
verbose
) -> Symbol
MINDFul.insertreservationhook!
— Methodinsertreservationhook!(
sdn::MINDFul.AbstractSDNController,
oxcview::MINDFul.OXCView,
dagnodeid::Base.UUID,
reservationdescription::MINDFul.OXCAddDropBypassSpectrumLLI;
verbose
) -> Symbol
MINDFul.insertreservationhook!
— Methodinsertreservationhook!(
sdn::MINDFul.AbstractSDNController,
resourceview::MINDFul.ReservableResourceView,
dagnodeid::Base.UUID,
reservationdescription;
verbose
) -> Symbol
Implement this function to do custom actions per specific ReservableResourceView
MINDFul.intradomaincompilationtemplate
— Methodintradomaincompilationtemplate(
;
prioritizepaths,
prioritizegrooming,
prioritizerouterport,
prioritizetransmdlandmode,
choosespectrum,
chooseoxcadddropport,
offsettime
) -> MINDFul.var"#224#234"{MINDFul.var"#224#225#235"{typeof(MINDFul.prioritizepaths_shortest), typeof(MINDFul.prioritizegrooming_default), typeof(MINDFul.prioritizerouterports_lowestrate), typeof(MINDFul.prioritizetransmdlmode_cheaplowrate), typeof(MINDFul.choosespectrum_firstfit), typeof(MINDFul.chooseoxcadddropport_first)}}
AIntra domain compilation algorithm template. Return function to do the intra domain compilation with the signature
intradomainalgfun(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm
) -> Symbol
The returned algorithm can be customized as follows.
The major selection process is made on the source.
Interfaces needed:
getcandidatepathsnum(
intentcompilationalgorithm::IntentCompilationAlgorithm)
-> Int
Return the candidate paths with highest priority first as Vector{Vector{Int}}}
. Return empty collection if non available.
prioritizepaths(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
) -> Vector{Vector{LocalNode}}
Return a Vector of grooming possibilities. Return a Vector
of grooming possibilities: Vector{Vector{Union{UUID, Edge{Int}}}}
Each element is a Vector
of either an intent UUID
or a new connectivity intent defined with Edge
.
prioritizegrooming(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm)
Return the candidate router ports with highest priority first Return empty collection if non available.
prioritizerouterport(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
node::LocalNode
) -> Vector{Int}
Return the transmission module index and the transmission mode index of that module as a Vector{Tuple{Int, Int}}
with the first being the transmission module index and the second the transmission mode. If this is calculated for the source node (default) pass path::Vector{LocalNode}
and transmdlcompat::Nothing
. If this is calculated for the destination node pass path::Nothing
and transmdlcompat::TransmissionModuleCompatibility
Return empty collection if non available.
prioritizetransmdlandmode(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
node::LocalNode,
path::Union{Nothing, Vector{LocalNode}},
transmdlcompat::Union{Nothing, TransmissionModuleCompatibility}=nothing
) -> Vector{Tuple{Int, Int}}
Return the first index of the spectrum slot range to be allocated. If none found, return nothing
choosespectrum(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
path::Vector{LocalNode},
demandslotsneeded::Int
) -> Vector{Int}
Return the index of the add/drop OXC port to allocate at node node
If none found, return nothing
chooseoxcadddropport(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
node::LocalNode
) -> Vector{Int}
MINDFul.intradomaincompilationtemplate_destination!
— Methodintradomaincompilationtemplate_destination!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
transmissionmodulecompat,
opticalincomingnode::Int64,
spectrumslotsrange::UnitRange{Int64},
prioritizerouterport::Function,
prioritizetransmdlmode::Function,
chooseoxcadddropport::Function,
mena::MINDFul.MutableEndNodeAllocations;
verbose,
offsettime
) -> Symbol
Takes care of the final node (destination). Return the returncode of the procedure. Also mutate lowlevelintentstoadd
to add the low-level intents found.
The following functions must be passed in (entry point from intradomaincompilationtemplate
)
Return the candidate router ports with highest priority first Return empty collection if non available.
prioritizerouterport(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
node::LocalNode
) -> Vector{Int}
Return the transmission module index and the transmission mode index of that module as a Vector{Tuple{Int, Int}}
with the first being the transmission module index and the second the transmission mode. If this is calculated for the source node (default) pass path::Vector{LocalNode}
and transmdlcompat::Nothing
. If this is calculated for the destination node pass path::Nothing
and transmdlcompat::TransmissionModuleCompatibility
Return empty collection if non available.
prioritizetransmdlandmode(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
node::LocalNode,
path::Union{Nothing, Vector{LocalNode}},
transmdlcompat::Union{Nothing, TransmissionModuleCompatibility}=nothing
) -> Vector{Tuple{Int, Int}}
Return the index of the add/drop OXC port to allocate at node node
If none found, return nothing
chooseoxcadddropport(
ibnf::IBNFramework,
idagnode::IntentDAGNode{<:ConnectivityIntent},
intentcompilationalgorithm::IntentCompilationAlgorithm,
node::LocalNode
) -> Vector{Int}
MINDFul.is_low_level_intent
— Methodis_low_level_intent(ci::MINDFul.ConnectivityIntent) -> Bool
MINDFul.isaddportallocation
— Methodisaddportallocation(
oxcswitchentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Bool
Checks if this reservation reserves the add port, i.e., it's (0, x, y).
MINDFul.isdropportallocation
— Methodisdropportallocation(
oxcswitchentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Bool
Checks if this reservation reserves the drop port, i.e., it's (x, y, 0).
MINDFul.isinternalorborderintent
— Methodisinternalorborderintent(
ibnf::MINDFul.IBNFramework,
connectivityintent::MINDFul.ConnectivityIntent;
noremoteintent
) -> Bool
Return true if at least source or destination is internal. Pass ; noremoteintent=true
to check whether there is an OpticalTerminateConstraint
or an OpticalInitiateConstraint
such that no RemoteIntent
is needed.
MINDFul.isnodeviewinternal
— Methodisnodeviewinternal(nv::MINDFul.NodeView) -> Bool
MINDFul.isonlyoptical
— Methodisonlyoptical(ena::MINDFul.EndNodeAllocations) -> Bool
Return true if allocaitons on the node do not influence the electrical devices. This is equivalent to the OpticalInitiateConstraint
and OpticalTerminateConstraint
MINDFul.isreservationvalid
— Functionisreservationvalid(
oxcswitchreservationentry::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Union{Bool, Symbol}
isreservationvalid(
oxcswitchreservationentry::MINDFul.OXCAddDropBypassSpectrumLLI,
verbose::Bool
) -> Union{Bool, Symbol}
MINDFul.issatisfied
— Methodissatisfied(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:Union{MINDFul.ConnectivityIntent, MINDFul.CrossLightpathIntent}};
onlyinstalled,
noextrallis,
verbose
) -> Union{Bool, Symbol}
Steps by step check if ibnf
satisfies the intent For now works only with local view. The options are:
- onlyinstalled: only consideres installed intents
- noextrallis: all LLI must be used
- orderedllis: pass list to access ordered llis
The function is not a definite assertion. The following cases are not covered:
- transmission module compatibility
- optical reach
MINDFul.issubpath
— Methodissubpath(
path::Vector{Int64},
subpath::Vector{Int64}
) -> Bool
Return `true` if `subpath` is contained in `path`
MINDFul.istransmissionmoduleandmodecompatible
— Methodistransmissionmoduleandmodecompatible(
transmissionmoduleview::MINDFul.TransmissionModuleView,
transmissionmodesindex::Int64,
transmissionmodulecompat::MINDFul.TransmissionModuleCompatibility
) -> Bool
Return true if the transmissionmoduleview
and mode support the transmissionmodulecompat
If onlymodecheck = true
is passed then the disaggregation/protocol (aka name) will not be checked.
MINDFul.istransmissionmoduleandmodecompatible
— Methodistransmissionmoduleandmodecompatible(
transmissionmoduleview::MINDFul.TransmissionModuleView,
transmissionmode::MINDFul.TransmissionMode,
transmissionmodulecompat::MINDFul.TransmissionModuleCompatibility
) -> Bool
Return true if the transmissionmoduleview
and mode support the transmissionmodulecompat
If onlymodecheck = true
is passed then the disaggregation/protocol (aka name) will not be checked.
MINDFul.istransmissionmoduleappropriate
— Methodistransmissionmoduleappropriate(
transmissionmoduleview::MINDFul.TransmissionModuleView,
demandrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}},
demanddistance::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}
) -> Bool
Checks if the transmission module can get deployed for the given demand rate and distance
MINDFul.istransmissionmodulecompatible
— Methodistransmissionmodulecompatible(
transmissionmoduleview::MINDFul.TransmissionModuleView,
transmissionmodulecompat::MINDFul.TransmissionModuleCompatibility
) -> Bool
Return true if transmissionmoduleview
can support with its modes the transmissionmodulecompat
MINDFul.logicalordergetelectricalpresence
— MethodReturn a Vector{Int} being the nodes that process electrically the signal
MINDFul.logicalordergetlightpaths
— Methodlogicalordergetlightpaths(
lo::Vector{<:MINDFul.LowLevelIntent}
) -> Vector
Return a Vector{Vector{Int}} being the lightpaths from the logical low level intent order
MINDFul.logicalordergetpath
— Methodlogicalordergetpath(
lo::Vector{<:MINDFul.LowLevelIntent}
) -> Vector{Int64}
Return a Vector{Int} with the path given from the logical low level intent order
MINDFul.logicalorderissinglelightpath
— Methodlogicalorderissinglelightpath(
lo::Vector{<:MINDFul.LowLevelIntent}
) -> Bool
Check that the LowLevelIntents are consisting a single LightPath implementation
This means that the order of the LLIs should be (RouterPortLLI) -> (TransmissionModuleLLI) -> OXCAddDropLLI -> (TranmsissionModuleLLI) -> (RouterPortLLI)
MINDFul.mycopy
— Methodmycopy(whatever) -> Any
MINDFul.newoxcentry_adddropallocation
— Functionnewoxcentry_adddropallocation(port::Int64)
newoxcentry_adddropallocation(
port::Int64,
spectrumslotsrange::UnitRange{Int64}
)
MINDFul.oxcllicontainsedge
— Methodoxcllicontainsedge(
oxclli::MINDFul.OXCAddDropBypassSpectrumLLI,
edge::Graphs.SimpleGraphs.SimpleEdge
) -> Any
MINDFul.prioritizegrooming_default
— Methodprioritizegrooming_default(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm
) -> Vector{Vector{Union{Base.UUID, Graphs.SimpleGraphs.SimpleEdge{Int64}}}}
Return a Vector of grooming possibilities.
Suggest grooming only if remains on the same path.
Suggest grooming only if one extra router port pair is used.
Return a `Vector` of grooming possibilities: `Vector{Vector{Union{UUID, Edge{Int}}}}`
Each element is a `Vector` of either an intent `UUID` or a new connectivity intent defined with `Edge`.
Sorting of the grooming possibilities is done just by minimizing lightpaths used
MINDFul.prioritizegrooming_none
— MethodDon't do grooming
MINDFul.prioritizepaths_shortest
— Methodprioritizepaths_shortest(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm
) -> Vector{T} where T<:(Vector{U} where U<:Integer)
MINDFul.prioritizerouterports_lowestrate
— Methodprioritizerouterports_lowestrate(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
node::Int64
) -> Vector{Int64}
MINDFul.prioritizesplitbordernodes_shortestorshortestrandom
— Methodprioritizesplitbordernodes_shortestorshortestrandom(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm
) -> Vector
Return a single choice of GlobalNode
and not several candidates. If the target domain is known return the GlobalNode
with the shortest distance. If the target domain is unknown return the border node with the shortest distance, excluding the (if) source domain.
MINDFul.prioritizesplitnodes_longestfirstshortestpath
— Methodprioritizesplitnodes_longestfirstshortestpath(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm
) -> Vector{MINDFul.GlobalNode}
Return the GlobalNode
contained in the shortest path that is the longest to reach given the optical reach situation. The GlobalNode
is used to break up the ConnectivityIntent
into two. Not several candidates are returned but only a single choice.
MINDFul.prioritizetransmdlmode_cheaplowrate
— Functionprioritizetransmdlmode_cheaplowrate(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
node::Int64,
path::Union{Nothing, Vector{Int64}}
) -> Vector{Tuple{Int64, Int64}}
prioritizetransmdlmode_cheaplowrate(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
node::Int64,
path::Union{Nothing, Vector{Int64}},
transmdlcompat::Union{Nothing, MINDFul.TransmissionModuleCompatibility}
) -> Vector{Tuple{Int64, Int64}}
Return the index with the lowest GBPS rate that can get deployed for the given demand rate and distance. If non is find return nothing
.
MINDFul.pushstatetoidagnode!
— Methodpushstatetoidagnode!(
intentlogstate::Array{Tuple{Dates.DateTime, S}, 1} where S<:Enum{Int32},
intentstate::MINDFul.IntentState.T;
offsettime
) -> Array{Tuple{Dates.DateTime, S}, 1} where S<:Enum{Int32}
MINDFul.pushstatetoidagnode!
— Methodpushstatetoidagnode!(
idagnode::MINDFul.IntentDAGNode,
intentstate::MINDFul.IntentState.T;
offsettime
) -> Vector{Tuple{Dates.DateTime, MINDFul.IntentState.T}}
MINDFul.removefrominstalledlightpaths!
— Methodremovefrominstalledlightpaths!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode
) -> Bool
Remove from the installedlightpaths representation if exists Return true
if done. Otherwise false
MINDFul.removeidagedge!
— Methodremoveidagedge!(
idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
fromnode::Base.UUID,
tonode::Base.UUID
) -> Bool
MINDFul.requestavailablecompilationalgorithms
— Methodrequestavailablecompilationalgorithms(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework
) -> Vector{Symbol}
Compilation algorithms are given as symbols because they might not be available programmatically to different IBN frameworks
MINDFul.requestavailablecompilationalgorithms
— Methodrequestavailablecompilationalgorithms(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler
)
MA1069 implementation
MINDFul.requestcompileintent_init!
— Functionrequestcompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
...
) -> Symbol
requestcompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
compilationalgorithmkey::Symbol;
...
) -> Symbol
requestcompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
compilationalgorithmkey::Symbol,
compilationalgorithmargs::Tuple;
verbose,
offsettime
) -> Symbol
The initiator domain myibnf
asks remoteibnf
to compile the external remote intent idagnodeid
with the specified compilation algorithm
MINDFul.requestcompileintent_init!
— Functionrequestcompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler;
...
)
requestcompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
compilationalgorithm::Symbol;
...
)
requestcompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
compilationalgorithm::Symbol,
compilationalgorithmkey::Tuple;
verbose
)
MA1069 implementation
MINDFul.requestcompileintent_term!
— Functionrequestcompileintent_term!(
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID
)
requestcompileintent_term!(
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
compilationalgorithmkey::Symbol
)
requestcompileintent_term!(
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
compilationalgorithmkey::Symbol,
compilationalgorithmargs::Tuple
)
MA1069 implementation
The initiator domain remoteibnf
asks this domain myibnf
to compile the internal remote intent idagnodeid
with the specified compilation algorithm
MINDFul.requestcompileintent_term!
— Functionrequestcompileintent_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
...
)
requestcompileintent_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
compilationalgorithmkey::Symbol;
...
)
requestcompileintent_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
compilationalgorithmkey::Symbol,
compilationalgorithmargs::Tuple;
verbose,
offsettime
)
The initiator domain remoteibnf
asks this domain myibnf
to compile the internal remote intent idagnodeid
with the specified compilation algorithm
MINDFul.requestcurrentlinkstate_init
— Methodrequestcurrentlinkstate_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
ge::MINDFul.GlobalEdge
) -> Union{Nothing, Bool}
Request the link state of the border edge Need to check whether ge
is indeed an edge shared with myibnf
MINDFul.requestcurrentlinkstate_term
— Methodrequestcurrentlinkstate_term(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
ge::MINDFul.GlobalEdge
) -> Union{Nothing, Bool}
MINDFul.requestdelegateintent!
— Methodrequestdelegateintent!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
intent::MINDFul.AbstractIntent,
internalidagnodeid::Base.UUID;
offsettime
) -> Base.UUID
Return the id of the new dag node if successful and nothing
otherwise
MINDFul.requestdelegateintent!
— Methodrequestdelegateintent!(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
intent::MINDFul.AbstractIntent,
internalidagnodeid::Base.UUID
)
MA1069 implementation
Delegates an intent to another domain
Return the id of the new dag node if successful and nothing
otherwise
MINDFul.requestglobalnodeelectricalpresence_init
— Methodrequestglobalnodeelectricalpresence_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Any
Request the path that is implementing intent intentuuid
in the remote IBN framework as global node vector
MINDFul.requestglobalnodeelectricalpresence_term
— Methodrequestglobalnodeelectricalpresence_term(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Any
MINDFul.requestibnattributegraph
— Methodrequestibnattributegraph(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework
) -> AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
Request topology information
MINDFul.requestibnattributegraph
— Methodrequestibnattributegraph(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler
)
MA1069 implementation If far away, think about authorization and permissions. That's the reason why there are 2 arguments: The first argument should have the authorization.
MINDFul.requestibnfhandlers_init
— Methodrequestibnfhandlers_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework
) -> Vector{H} where H<:MINDFul.AbstractIBNFHandler
Request the handlers of the handler
MINDFul.requestidag_init
— Methodrequestidag_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework
) -> AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo}
Request intent dag information
MINDFul.requestidag_init
— MethodMA1069 implementation
MINDFul.requestinstallintent_init!
— Methodrequestinstallintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.requestinstallintent_term!
— Methodrequestinstallintent_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.requestintentgloballightpaths_init
— Methodrequestintentgloballightpaths_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Vector
Request the path that is implementing intent intentuuid
in the remote IBN framework as global node vector
MINDFul.requestintentgloballightpaths_term
— Methodrequestintentgloballightpaths_term(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Vector
MINDFul.requestintentglobalpath_init
— Methodrequestintentglobalpath_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Vector
Request the path that is implementing intent intentuuid
in the remote IBN framework as global node vector
MINDFul.requestintentglobalpath_term
— Methodrequestintentglobalpath_term(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled
) -> Vector
MINDFul.requestissatisfied
— Methodrequestissatisfied(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
onlyinstalled,
noextrallis
) -> Union{Bool, Symbol}
Request to remoteibnf
whether the idagnode
is theoretically satisfied
MINDFul.requestissatisfied
— Methodrequestissatisfied(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.RemoteIBNFHandler,
idagnode::MINDFul.IntentDAGNode;
onlyinstalled,
noextrallis
)
MA1069 implementation
Request to remoteibnf
whether the idagnode
is theoretically satisfied
MINDFul.requestlinkstates_init
— Methodrequestlinkstates_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
ge::MINDFul.GlobalEdge
) -> Union{Nothing, Vector{Tuple{Dates.DateTime, Bool}}}
Request all the link states of the border edge Need to check whether ge
is indeed an edge shared with myibnf
MINDFul.requestlogicallliorder_init
— Methodrequestlogicallliorder_init(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
intentuuid::Base.UUID;
onlyinstalled,
verbose
) -> Union{Bool, Vector{MINDFul.LowLevelIntent}}
Request logical low level intent sequence
MINDFul.requestremoteintentstateupdate!
— Methodrequestremoteintentstateupdate!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID,
newstate::MINDFul.IntentState.T;
offsettime
) -> Bool
Request the initiator remoteibnf
to update the state of its mirrored remote intent
MINDFul.requestsetlinkstate_init!
— Methodrequestsetlinkstate_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
ge::MINDFul.GlobalEdge,
operatingstate::Bool;
offsettime
) -> Union{Nothing, Symbol}
Request to set the state of the neighboring link
MINDFul.requestsetlinkstate_term!
— Methodrequestsetlinkstate_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
ge::MINDFul.GlobalEdge,
operatingstate::Bool;
offsettime
) -> Union{Nothing, Symbol}
MINDFul.requestspectrumavailability
— Methodrequestspectrumavailability(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
ge::MINDFul.GlobalEdge
) -> Union{Nothing, Vector{Bool}}
Request spectrum slot availabilities of the border edge Need to check whether ge
is indeed an edge shared with myibnf
MINDFul.requestspectrumavailability
— Methodrequestspectrumavailability(
myibnf::MINDFul.IBNFramework,
remoteibnfhandler::MINDFul.RemoteIBNFHandler,
ge::MINDFul.GlobalEdge
)
MA1069 implementation
Request spectr /um slot availabilities of the border edge Need to check whether ge
is indeed an edge shared with myibnf
MINDFul.requestuncompileintent_init!
— Methodrequestuncompileintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.requestuncompileintent_term!
— Methodrequestuncompileintent_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.requestuninstallintent_init!
— Methodrequestuninstallintent_init!(
myibnf::MINDFul.IBNFramework,
remoteibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.requestuninstallintent_term!
— Methodrequestuninstallintent_term!(
remoteibnfhandler::MINDFul.AbstractIBNFHandler,
myibnf::MINDFul.IBNFramework,
idagnodeid::Base.UUID;
verbose,
offsettime
) -> Symbol
MINDFul.reserve!
— Methodreserve!(
sdn::MINDFul.AbstractSDNController,
resourceview::MINDFul.ReservableResourceView,
lowlevelintent::MINDFul.LowLevelIntent,
dagnodeid::Base.UUID;
checkfirst,
verbose
) -> Symbol
MINDFul.reserveunreserveleafintents!
— Methodreserveunreserveleafintents!(
ibnf::MINDFul.IBNFramework,
idagnodeleaf::MINDFul.IntentDAGNode,
doinstall::Bool;
verbose,
offsettime
) -> Bool
to reserve pass doinstall=true
, and to unreserve doinstall=false
MINDFul.setadddropport!
— Methodsetadddropport!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.setlinkstate!
— Methodsetlinkstate!(
ibnf::MINDFul.IBNFramework,
edge::Graphs.SimpleGraphs.SimpleEdge,
operatingstate::Bool;
offsettime
) -> Union{Nothing, Symbol}
Set the link state on both OXCView ends of edge
MINDFul.setlinkstate!
— Methodsetlinkstate!(
ibnf::MINDFul.IBNFramework,
oxcview::MINDFul.OXCView,
edge::Graphs.SimpleGraphs.SimpleEdge,
operatingstate::Bool;
offsettime
) -> Symbol
Set the operating state of the edge in oxcview
and trigger the state update of the relevant low level intents.
MINDFul.setlocalnode!
— Methodsetlocalnode!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.setlocalnode_input!
— Methodsetlocalnode_input!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.setlocalnode_output!
— Methodsetlocalnode_output!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
)
MINDFul.setoxcviewlinkavailabilities!
— Methodsetoxcviewlinkavailabilities!(
oxcview::MINDFul.OXCView,
oxcadddropbypassspectrumlli::MINDFul.OXCAddDropBypassSpectrumLLI,
setflag::Bool;
verbose
) -> Symbol
Set the link spectrum availabilities of the oxcview
based on the OXC low level intent to setflags
MINDFul.setrouterportindex!
— Methodsetrouterportindex!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.settransmissionmodesindex!
— Methodsettransmissionmodesindex!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.settransmissionmoduleviewpoolindex!
— Methodsettransmissionmoduleviewpoolindex!(
ena::MINDFul.MutableEndNodeAllocations,
intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.splitandcompilecrossdomainconnectivityintent
— Methodsplitandcompilecrossdomainconnectivityintent(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
intradomainalgfun::Function,
externaldomainalgkeyword::Symbol,
mediatorbordernode::MINDFul.GlobalNode;
verbose,
offsettime
) -> Symbol
MINDFul.splitandcompileintradomainconnecivityintent!
— Methodsplitandcompileintradomainconnecivityintent!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
intentcompilationalgorithm::MINDFul.IntentCompilationAlgorithm,
intradomainalgfun::Function,
splitglobalnode::MINDFul.GlobalNode;
verbose,
offsettime
) -> Any
Splits connectivity intent on splitglobalnode
MINDFul.stage!
— Methodstage!(
resourceview::MINDFul.ReservableResourceView,
lli::MINDFul.LowLevelIntent
) -> Symbol
MINDFul.stageaddidagnode!
— Methodstageaddidagnode!(
ibnf::MINDFul.IBNFramework,
lli::MINDFul.LowLevelIntent;
parentid,
intentissuer,
offsettime
) -> Union{Nothing, Symbol, Set}
Stage lli as compiled in the equipment and add LLI in the intent DAG. Staged LLIs are not reserved but used to know that they will be in the future.
MINDFul.stageunstageleafintent!
— Methodstageunstageleafintent!(
ibnf::MINDFul.IBNFramework,
lli::MINDFul.LowLevelIntent,
dostage::Bool
) -> Union{Nothing, Symbol, Set}
dostage
true
for stage, false
for unstage
MINDFul.unreserve!
— Methodunreserve!(
sdn::MINDFul.AbstractSDNController,
resourceview::MINDFul.ReservableResourceView,
dagnodeid::Base.UUID;
verbose
) -> Symbol
MINDFul.unstage!
— Methodunstage!(
resourceview::MINDFul.ReservableResourceView,
lli::MINDFul.LowLevelIntent
) -> Set
MINDFul.updateidagnodestates!
— Functionupdateidagnodestates!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode;
...
) -> Bool
updateidagnodestates!(
ibnf::MINDFul.IBNFramework,
idagnode::MINDFul.IntentDAGNode,
makestate::Union{Nothing, MINDFul.IntentState.T};
offsettime
) -> Bool
Return value is true if state is changed.
MINDFul.@logtime
— MacroThis macro is used to calculate the current (simulated) time as offsettime + (now() - entrytime)
MINDFul.@passtime
— MacroThis macro is used to pass the (simulated) timing information. It basically passes (; offsettime)
This strategy calls now()
every time before passing the arguments. If that proves to slow down the implementation consider to pass offsettime, entrytime
around and calcualte @logtime once in the end. Another caveat is that the communication overhead between domains is not measured. An offsetime=nothing
logs the time of the current system.
MINDFul.@recvtime
— MacroThis macro is used to receive the (simulated) timing information. This macro does two things:
- puts the
offsettime::DateTime=now()
in the input keyword parameters - puts
entrytime = now()
as the first command to happen in the function
Use @logtime
to calculate the current time inside the function. Use @passtime
to pass the timing information to another function.
MINDFul.@returnfalseiffalse
— MacroReturn a return false
if the expression ex
evaluates to false. If verbose=true
print the statement and the location. If the expression passed is true
do nothing.
MINDFul.@returniffalse
— MacroReturn a return ReturnCodes.Fail
if the expression ex
evaluates to false. If verbose=true
print the statement and the location. If the expression passed is true
do nothing. TODO: have also a helper message be printed