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
) -> Any
Get the spectrum availability slots vector for edge
MINDFul.getglobalnode — Methodgetglobalnode(s) -> MINDFul.GlobalNode
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.getglobalnode — Methodgetglobalnode(
    splitglobalnode::MINDFul.SplitGlobalNode
) -> MINDFul.GlobalNode
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
) -> Vector{Bool}
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
) -> MINDFul.ReturnUUIDTime
kk Add a new user intent to the IBN framework and return the id.
MINDFul.compileintent! — Methodcompileintent!(
    ibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> MINDFul.ReturnCodeTime
THIS SHOULD BE THE ENTRY FUNCTION. DO NOT USE DIRECTLY THE idagnode ONES.
MINDFul.compileintent! — Methodcompileintent!(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.LightpathIntent};
    verbose,
    offsettime
) -> Symbol
MINDFul.compileintent! — Methodcompileintent!(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ProtectedLightpathIntent};
    verbose,
    offsettime
) -> Symbol
MINDFul.compileintent! — Methodcompileintent!(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.RemoteIntent};
    verbose,
    offsettime
) -> Any
MINDFul.compileintent! — Methodcompileintent!(
    ibnf::MINDFul.IBNFramework{A, B, C, D, MINDFul.BestEmpiricalAvailabilityCompilation} where {A, B, C, D},
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent};
    verbose,
    offsettime
) -> Symbol
MINDFul.compileintent! — Methodcompileintent!(
    ibnf::MINDFul.IBNFramework{A, B, C, D, R} where {A, B, C, D, R<:MINDFul.KShorestPathFirstFitCompilation},
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent};
    verbose,
    offsettime
) -> Symbol
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
) -> MINDFul.ReturnCodeTime
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
) -> MINDFul.ReturnCodeTime
MINDFul.uncompileintent! — Methoduncompileintent!(
    ibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> MINDFul.ReturnCodeTime
MINDFul.uninstallintent! — Methoduninstallintent!(
    ibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> MINDFul.ReturnCodeTime
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
Public HTTP codes
MINDFul.HTTPMessages — ModuleThe HTTP codes and data defined for the different requests.    All the const variables have a String value that represents the endpoint of the URL or the data that is passed respectively.    With full permission, the domains can access all the functions of the remote IBN framework.    With limited permission, the domains can only access the defined limited set of functions.
Non-public interface
MINDFul.OxygenServer — TypeThe type of the HTTP server used in the IBN Framework depends on whether the encryption is used or not.
MINDFul.AbstractIBNFHandler — TypeA handler or API for IBNFrameworks to talk to each other
MINDFul.AbstractIntent — Typeabstract type AbstractIntentA 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.AvailabilityConstraint — Typestruct AvailabilityConstraint <: MINDFul.AbstractIntentConstraint- availabilityrequirement::Float64: A float between 0 and 1 for the desired availability
- compliancetarget::Float64: A float between 0 and 1 expressing the desired probability to cover the availability requirement
MINDFul.BasicAlgorithmMemory — Typemutable struct BasicAlgorithmMemory- datetime::Dates.DateTime: The simulated (or not) current datetime. It's used by the algorithm to build the uptime/downtime data
- logintrapaths::Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Dict{Vector{Vector{Int64}}, Int64}}: Log here the selection of (protection) path for an intra node (+ border) intent after install. Add new elements upon installation A new path- Vector{Vector{LocalNode}} is added per node pair and counted how many times was it used
- loginterupdowntimes::Dict{MINDFul.GlobalEdge, Dict{Base.UUID, MINDFul.UpDownTimesNDatetime}}: Log here the up/downtimes of border-node to cross node. Add new elements upon installation. Update entries upon compilation. All UUIDs correspond to Remote Connectivity intents
MINDFul.BestEmpiricalAvailabilityCompilation — Typemutable struct BestEmpiricalAvailabilityCompilation <: MINDFul.IntentCompilationAlgorithmWithMemory- candidatepathsnum::Int64: How many k paths to check
- pathsforprotectionnum::Int64: How many m paths to consider for joint protection. It investigates all possible pair of the first m paths
- cachedresults::MINDFul.CachedResults: cached information
- basicalgmem::MINDFul.BasicAlgorithmMemory: The algorithm memory that is updated
MINDFul.BoolLogState — TypeStores a vector of the history of the boolean states and their timings
MINDFul.CachedResults — Typestruct CachedResults- ibnagweights::Matrix{Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}}
- yenpathsdict::Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Vector{Int64}}}
- yenpathsdistsdict::Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}}}
Used for every intent compilation algorithm satisfying the template to cache and not recalculate results.
MINDFul.ConnectivityIntent — Typestruct ConnectivityIntent{T<:MINDFul.AbstractIntentConstraint} <: MINDFul.AbstractIntent- sourcenode::MINDFul.GlobalNode: Source node
- destinationnode::MINDFul.GlobalNode: Destination node
- rate::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: The- EdgeProperties
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 id
- localnode::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.IBNFCommunication — Typemutable struct IBNFCommunication{H<:MINDFul.AbstractIBNFHandler}- server::Union{Nothing, HTTP.Servers.Server{HTTP.Servers.Listener{Nothing, Sockets.TCPServer}}, HTTP.Servers.Server{HTTP.Servers.Listener{MbedTLS.SSLConfig, Sockets.TCPServer}}}
- ibnfhandlers::Vector{H} where H<:MINDFul.AbstractIBNFHandler
Server is of type Union{Nothing, OxygenServer} to allow for the server to be started later.
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), I<:MINDFul.IBNFCommunication, R<:MINDFul.IntentCompilationAlgorithm} <: MINDFul.AbstractIBNFHandler- operationmode::MINDFul.AbstractOperationMode: The operation mode of the IBN framework
- ibnfid::Base.UUID: The id of this IBN Framework instance
- intentdag::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 included
- ibnfcomm::MINDFul.IBNFCommunication: Other IBN Frameworks handles
- sdncontroller::MINDFul.AbstractSDNController: SDN controller handle
- intcompalg::MINDFul.IntentCompilationAlgorithm: Intent compilation algorithm
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},
    encryption::Bool,
    ips::Vector{String},
    sdncontroller::MINDFul.AbstractSDNController,
    intcompalg::MINDFul.IntentCompilationAlgorithm;
    ...
) -> MINDFul.IBNFramework{MINDFul.DefaultOperationMode}
IBNFramework(
    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},
    encryption::Bool,
    ips::Vector{String},
    sdncontroller::MINDFul.AbstractSDNController,
    intcompalg::MINDFul.IntentCompilationAlgorithm,
    ibnfsdict::Dict{Int64, MINDFul.IBNFramework};
    verbose
) -> MINDFul.IBNFramework{MINDFul.DefaultOperationMode}
Constructor that specify IBNFHandlers to make it potentially type stable
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,
    intcompalg::MINDFul.IntentCompilationAlgorithm
) -> MINDFul.IBNFramework{MINDFul.DefaultOperationMode, MINDFul.SDNdummy, T, I} where {T<:(AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView), I<:(MINDFul.IBNFCommunication{H} where H<:(MINDFul.IBNFramework{MINDFul.DefaultOperationMode, MINDFul.SDNdummy}))}
The most default construct with abstract type of IBN handlers
MINDFul.IBNIssuer — Typestruct IBNIssuer <: MINDFul.IntentIssuerIntent is issued by an IBN Framework domain
- ibnfid::Base.UUID: the id of the- IBNFissued the intent
- idagnodeid::Base.UUID: The id of the intent node in the DAG. The issuer of this intent node points back in this- IBNIssuerinstance.
MINDFul.IntentCompilationAlgorithm — TypeInstances of this specify how to compile the intent
MINDFul.IntentCompilationAlgorithmWithMemory — TypeCompilation algorithm with some memory
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 intents
- installedlightpaths::Dict{Base.UUID, MINDFul.LightpathRepresentation}: Logical representation of the installed intents as lightpaths (must be direct parent of the LLIs)
- idagnodeidxdict::Dict{Base.UUID, Int64}: Dict to find the idx of a specific intent. For performance purposes
MINDFul.IntentDAGInfo — MethodIntentDAGInfo() -> MINDFul.IntentDAGInfo
Empty constructor
MINDFul.IntentDAGNode — Typestruct IntentDAGNode{I<:MINDFul.AbstractIntent, II<:MINDFul.IntentIssuer}- intent::MINDFul.AbstractIntent: The intent itself
- idagnodeid::Base.UUID: The id of the intent w.r.t. the intent DAG it belongs
- intentissuer::MINDFul.IntentIssuer: The intent issuer
- logstate::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.IntentLogStateTuple — TypeStores a single log element for the intent state and time
MINDFul.KShorestPathFirstFitCompilation — Typestruct KShorestPathFirstFitCompilation <: MINDFul.IntentCompilationAlgorithmWithMemory- candidatepathsnum::Int64: How many k paths to check
- cachedresults::MINDFul.CachedResults
- basicalgmem::MINDFul.BasicAlgorithmMemory
MINDFul.KShorestPathFirstFitCompilation — MethodKShorestPathFirstFitCompilation(
    ibnag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView,
    candidatepathnum::Int64
) -> MINDFul.KShorestPathFirstFitCompilation
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{Vector{Int64}}: The nodes comprising the lightpath
- startsoptically::Bool:- trueif it starts optically (due to- OpticalInitiateConstraint) or- falseotherwise
- terminatessoptically::Bool:- trueif it terminates optically (due to- OpticalTerminateConstraint) or- falseotherwise
- totalbandwidth::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}: total bandwidth that can be allocated
- destinationnode::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.LimitedSplitConstraint — Typestruct LimitedSplitConstraint <: MINDFul.AbstractIntentConstraintConstraint that obliges no limitless splitting of the intent Split level is 0 in root intent and increases +1 for every child Splitting in border node doesn't count as it's necessary.
MINDFul.LocalNode — TypeSignifies a local node notation as a single integer
MINDFul.LowLevelIntent — Typeabstract type LowLevelIntent <: MINDFul.AbstractIntentAn 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.AbstractIntentConstraintConstraint 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 in
- outneighbors::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: The- NodeProperties
- routerview::Union{Nothing, R} where R<:MINDFul.RouterView: The router in use
- oxcview::Union{Nothing, O} where O<:MINDFul.OXCView: The OXC in use
- transmissionmoduleviewpool::Union{Nothing, Vector{T}} where T<:MINDFul.TransmissionModuleView: The transmission modules contained
- transmissionmodulereservations::Union{Nothing, Dict{Base.UUID, MINDFul.TransmissionModuleLLI}}: intent reservation of the transmission modules
- transmissionmodulestaged::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 node
- localnode_input::Int64: The node in graph entering the OXC (or- 0if invalid)
- adddropport::Int64: The port index adding or dropping an optical signal (or- 0if invalid)
- localnode_output::Int64: The node in graph exiting the OXC (or- 0if 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 OXC
- adddropportnumber::Int64: The number of add/drop ports in OXC
- switchreservations::Dict{Base.UUID, MINDFul.OXCAddDropBypassSpectrumLLI}: The intent reservations together with the configuration
- switchstaged::Set{MINDFul.OXCAddDropBypassSpectrumLLI}: The intent staged together with the configuration
- linkspectrumavailabilities::Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Bool}}: Link spectrum availability total view in sync with- switchreservations. A vector showing the availability of the spectrum slots.- truefor available and- falsefor 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.AbstractIntentConstraintConstraint 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 OXC
- spectrumslotsrange::UnitRange{Int64}: The spectrum range allocated 1-based indexed
- opticalreach::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}: the remaining optical reach to use
- transmissionmodulecompat::MINDFul.TransmissionModuleCompatibility: Requirements for termination in the electical layer
MINDFul.OpticalTerminateConstraint — Typestruct OpticalTerminateConstraint <: MINDFul.AbstractIntentConstraintConstraint 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.ProtectedLightpathIntent — Typestruct ProtectedLightpathIntent <: MINDFul.AbstractIntent- prsourcenodeallocations::Vector{MINDFul.EndNodeAllocations}
- prdestinationnodeallocations::Vector{MINDFul.EndNodeAllocations}
- prspectrumslotsrange::Vector{UnitRange{Int64}}
- prpath::Vector{Vector{Int64}}
An accumulation of lightpaths such that they get protected It's being translated down to many Lightpath intents that have certain LLIs groomed with one another Furthermore, only one lightpath is installed and the others are staged. In case of a failure a different working lightpath will be installed instead
MINDFul.RemoteHTTPHandler — Typemutable struct RemoteHTTPHandler <: MINDFul.AbstractIBNFHandler- ibnfid::Base.UUID
- baseurl::String
- permission::String
- rsakey::String
- rsasecret::String
- gentoken::String
- recvtoken::String
A single token is generated per directed pair. The permission is referring to the genenerated token (gentoken). gentoken and recvtoken are not constant as they will be generated when the handshake is done. rsakey contains the private key if the handler belongs to the local domain. If the handler is for a remote domain, it contains the public key of that domain. The secret is used to authenticate the initiator domain and it is also generated during the handshake.
MINDFul.RemoteIntent — Typestruct RemoteIntent{I<:MINDFul.AbstractIntent} <: MINDFul.AbstractIntent- ibnfid::Base.UUID: The id of the remote IBN framework
- idagnodeid::Base.UUID: The dag node id of the remote IBN framework
- intent::MINDFul.AbstractIntent: The intent to be transferred
- isinitiator::Bool:- trueif the intent originates here and- falseotherwise
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.ReturnCodeTime — Typestruct ReturnCodeTime- returncode::Symbol
- datetime::Dates.DateTime
What most time-sensitive functions return
MINDFul.ReturnUUIDTime — Typestruct ReturnUUIDTime- uuid::Base.UUID
- datetime::Dates.DateTime
MINDFul.RouterPort — Typestruct RouterPortA 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 node
- routerportindex::Int64: The router port index to be reserved
MINDFul.RouterView — Typestruct RouterView{R<:MINDFul.AbstractRouter} <: MINDFul.ReservableResourceViewA view of a router with several ports.
- router::MINDFul.AbstractRouter: The underlying router
- ports::Vector{MINDFul.RouterPort}: number of ports in router
- portreservations::Dict{Base.UUID, MINDFul.RouterPortLLI}: The intent reservations together with the low level intent of reserved port
- portstaged::Set{MINDFul.RouterPortLLI}: The intent reservations together with the low level intent of a staged port
MINDFul.SDNdummy — Typestruct SDNdummy <: MINDFul.AbstractSDNControllerMINDFul.SplitGlobalNode — Typestruct SplitGlobalNode- globalnode::MINDFul.GlobalNode
- firsthalfavailabilityconstraint::Union{Nothing, MINDFul.AvailabilityConstraint}
- secondhalfavailabilityconstraint::Union{Nothing, MINDFul.AvailabilityConstraint}
The return value from the prioritizesplitnode and prioritizesplitbordernode functions
MINDFul.SplitGlobalNode — MethodSplitGlobalNode(
    globalnode::MINDFul.GlobalNode
) -> MINDFul.SplitGlobalNode
MINDFul.TransmissionMode — Typestruct TransmissionModeRepresents a transmission mode. A transponder, if flexible, might support many of them.
- opticalreach::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}: Optical reach in kilometers
- rate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}: rate in Gbps
- spectrumslotsneeded::Int64: Number of 12.5 GHz frequency slots needed
MINDFul.TransmissionModuleCompatibility — Typestruct TransmissionModuleCompatibility- routerportrate::Union{Nothing, Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}}: The router port rate (maximum). If it's nothing it means it's already resolved and trusted.
- rate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}: The bandwidth of the connection
- spectrumslotsneeded::Int64: Number of 12.5Gz frequency slots needed
- name::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.AbstractIntentContains the requirements to compile down to TransmissionModuleLLI
- rate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}: The data rate requierement
- opticalreach::Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}: Optical reach requirements in kilometres
- spectrumslotsneeded::Int64: Number of 12.5 GHz frequency slots needed
MINDFul.TransmissionModuleLLI — Typestruct TransmissionModuleLLI <: MINDFul.LowLevelIntent- localnode::Int64: Target node
- transmissionmoduleviewpoolindex::Int64: The index of the transmission module pool to be reserved
- transmissionmodesindex::Int64: The selected mode of the transmission module.- 0means nothing is still selected. Non elastic modules can have only- 1.
- routerportindex::Int64: The router port index to be connected
- adddropport::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 module
- name::String: descriptive name of the transmission module
- transmissionmodes::Vector{MINDFul.TransmissionMode}: operating transmission modes
- cost::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.addtoinstalledlightpaths! — Methodaddtoinstalledlightpaths!(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{MINDFul.ProtectedLightpathIntent}
) -> Bool
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.calcintrasplitglobalnode — Methodcalcintrasplitglobalnode(
    ibnf::MINDFul.IBNFramework,
    intent::MINDFul.ConnectivityIntent,
    splitglobalnodeonly::MINDFul.GlobalNode
) -> MINDFul.SplitGlobalNode
MINDFul.calculatepathavailability — Methodcalculatepathavailability(
    availabilities::Vector{Float64}
) -> Float64
MINDFul.calculateprotectedpathavailability — Methodcalculateprotectedpathavailability(
    p1edges::Vector{Graphs.SimpleGraphs.SimpleEdge{Int64}},
    p1avails::Vector{Float64},
    p2edges::Vector{Graphs.SimpleGraphs.SimpleEdge{Int64}},
    p2avails::Vector{Float64}
) -> Float64
MINDFul.calculateprotectedpathavailability — Methodcalculateprotectedpathavailability(
    pedges::Vector{Vector{Graphs.SimpleGraphs.SimpleEdge{Int64}}},
    pavails::Vector{Vector{Float64}}
) -> Float64
TODO : need to finish it if I ever use more than 2 protection paths
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.checkfilepath — Methodcheckfilepath(
    directoryname::String,
    filepath::String
) -> String
Function to check if a given file path is absolute or relative. If it is relative, it will be joined with the given directory name.
MINDFul.checkifopensslinstalled — Methodcheckifopensslinstalled() -> Bool
Function to check if openSSL is installed on the system. It runs the openssl version command and checks if it succeeds. If it fails, it prints an error message and exits.
MINDFul.choosecrosssplitavailabilities — Methodchoosecrosssplitavailabilities(
    avcon::MINDFul.AvailabilityConstraint,
    firsthalfavailability,
    secondhalfavailability,
    beacomp::MINDFul.BestEmpiricalAvailabilityCompilation
) -> Tuple{MINDFul.AvailabilityConstraint, MINDFul.AvailabilityConstraint}
MINDFul.choosecrosssplitavailabilities — Methodchoosecrosssplitavailabilities(
    avcon::MINDFul.AvailabilityConstraint,
    firsthalfavailability,
    secondhalfavailability,
    intentcomp::MINDFul.IntentCompilationAlgorithm
) -> Tuple{MINDFul.AvailabilityConstraint, MINDFul.AvailabilityConstraint}
MINDFul.choosegroominornot — MethodChoose exactly the grooming for protectedpaths If many  protectedpaths are passed, there can only be matched with a single protection lightpath intent that has the same paths If just one path is passed, it can be broken down to several lightpaths but that must have the same nodes.
MINDFul.chooseintrasplitavailabilities — Methodchooseintrasplitavailabilities(
    avcon::MINDFul.AvailabilityConstraint,
    firsthalfavailability,
    secondhalfavailability,
    intentcomp::MINDFul.IntentCompilationAlgorithm
) -> Tuple{MINDFul.AvailabilityConstraint, MINDFul.AvailabilityConstraint}
MINDFul.chooseintrasplitavailabilities — Methodchooseintrasplitavailabilities(
    avcon::MINDFul.AvailabilityConstraint,
    firsthalfavailability::Distributions.DiscreteNonParametric,
    secondhalfavailability::Distributions.DiscreteNonParametric,
    beacomp::MINDFul.BestEmpiricalAvailabilityCompilation
) -> Tuple{MINDFul.AvailabilityConstraint, MINDFul.AvailabilityConstraint}
quantile(::DiscreteNonParametric, q) gives smallest value x such that cdf(::DiscreteNonParatetric, x) >= q This means that there is x is the biggest value for q% of ::DiscreteNonParametric. For example, q=0.95 means that x will be bigger than 95% of the support of ::DiscreteNonParametric. cquantile is exactly the opposite implying that it would be smaller than 95% of the support. For example, now talking availability requirements and compliance targets,  
MINDFul.chooseoxcadddropport_first — Methodchooseoxcadddropport_first(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    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},
    path::Vector{Int64},
    demandslotsneeded::Int64
) -> Union{Nothing, Int64}
MINDFul.closeibnfserver — Methodcloseibnfserver(ibnf::MINDFul.IBNFramework)
Function to gracefully close the server of an IBNFramework.
MINDFul.compilegroomingpossibility — Methodcompilegroomingpossibility(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    groomingpossibility::Vector{Union{Base.UUID, Graphs.SimpleGraphs.SimpleEdge{Int64}}},
    intradomainalgfun::Function,
    cachedintentresult::Dict{MINDFul.ConnectivityIntent, Symbol};
    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};
    verbose,
    intradomainalgfun,
    prioritizegrooming,
    prioritizesplitnodes,
    prioritizesplitbordernodes,
    cachedintentresult,
    maximumsplitlevel,
    offsettime
)
A template compilation function that can be extended
Give in the following hook functions:
- intradomainalgfunis 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},
    ; datetime::DateTime
) -> Symbol- prioritizesplitnodesis 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 GlobalNodes with decreasing priority of which node should be chosen.
prioritizesplitnodes(
    ibnf::IBNFramework,
    idagnode::IntentDAGNode,
) -> Vector{GlobalNode}- prioritizesplitbordernodesis 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 SplitGlobalNodes with decreasing priority of which node should be chosen.
prioritizesplitbordernodes(
    ibnf::IBNFramework,
    idagnode::IntentDAGNode{<:ConnectivityIntent},
) -> 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.julia> MINDF.consecutivelightpathsidx([
       [1,3,7], #1
       [2,5,7], #2
       [2,8,9], #3
       [7,4,2]
       ], 1; startingnode=true)
3-element Vector{Vector{Int64}}:
 [1]
 [1, 4]
 [1, 4, 3]MINDFul.consecutivelightpathsidx — MethodReturn all possible combination of the lightpath indices passed such that `path` is formedMINDFul.construct_BoolLogState — Functionconstruct_BoolLogState(
) -> Vector{Tuple{Dates.DateTime, Bool}}
construct_BoolLogState(
    offsettime
) -> Vector{T} where T<:Tuple{Any, Bool}
construct_BoolLogState(
    offsettime,
    initialstate
) -> Vector{<:Tuple{Any, 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.convertb64keytopem — Methodconvertb64keytopem(
    keyb64::String,
    typeofkey::String
) -> String
Function to convert a base64 encoded key to PEM format. The typeofkey parameter should be either "PUBLIC KEY" or "PRIVATE KEY".
MINDFul.createmultidomainIBNAttributeGraph — MethodcreatemultidomainIBNAttributeGraph(
    ibnf::MINDFul.IBNFramework
) -> AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
Construct a IBNAttributeGraph representation for all mutli-domain network from the IBNFramework neighboring interIBNF ATTENTION: the inner graph data are still representing information internally per domain.
MINDFul.deallocate_transmissionmodule — Methoddeallocate_transmissionmodule(
    ibnf::MINDFul.IBNFramework,
    localnode::Int64,
    transmissionmodulereservationentry::MINDFul.TransmissionModuleLLI
) -> Bool
MINDFul.default_OXCview — Functiondefault_OXCview(
    nodeproperties::MINDFul.NodeProperties,
    spectrumslots::Int64
) -> MINDFul.OXCView{MINDFul.OXCDummy}
default_OXCview(
    nodeproperties::MINDFul.NodeProperties,
    spectrumslots::Int64,
    offsettime
) -> MINDFul.OXCView{MINDFul.OXCDummy}
MINDFul.deleteedgesuntilgroomingfound! — Methoddeleteedgesuntilgroomingfound!(
    idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
    idagnodeid::Base.UUID
)
Delete edges towards grooming nodes.
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.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.estimatecrossconnectionavailability — Methodestimatecrossconnectionavailability(
    ibnf::MINDFul.IBNFramework,
    srcnode::MINDFul.GlobalNode,
    dstnode::MINDFul.GlobalNode
)
MINDFul.estimatecrossconnectionavailability — Methodestimatecrossconnectionavailability(
    ibnf::MINDFul.IBNFramework{A, B, C, D, MINDFul.BestEmpiricalAvailabilityCompilation} where {A, B, C, D},
    srcglobalnode::MINDFul.GlobalNode,
    dstglobalnode::MINDFul.GlobalNode
)
MINDFul.estimateintraconnectionavailability — Methodestimateintraconnectionavailability(
    ibnf::MINDFul.IBNFramework,
    srcnode::Int64,
    dstnode::Int64
)
MINDFul.estimateintraconnectionavailability — Methodestimateintraconnectionavailability(
    ibnf::MINDFul.IBNFramework{A, B, C, D, MINDFul.BestEmpiricalAvailabilityCompilation} where {A, B, C, D},
    srclocalnode::Int64,
    dstlocalnode::Int64
)
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.generateRSAkeys — MethodgenerateRSAkeys(configdir::String)
Function to generate RSA keys (only used for testing). In real scenarios, private keys must be previously generated and public keys must be shared accordingly.
MINDFul.generateTLScertificate — MethodgenerateTLScertificate() -> Any
Function to generate a self-signed TLS certificate and corresponding private key.
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:- nothingfor a starting lightpath and an- Integerdenating the add/drop port otherwise
- opticalinitincomingnode: the (@ref)[LocalNode] denoting the incoming optical connection from the specified node for a starting lightpath. Set to- nothingif not a starting lightpath
- destadddropport:- nothingfor an ending lightpath and an- Integerdenating 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.getavailabilityrequirement — Methodgetavailabilityrequirement(
    ac::MINDFul.AvailabilityConstraint
) -> Float64
MINDFul.getavailabilityrequirement — Methodgetavailabilityrequirement(
    ac::MINDFul.MutableAvailabilityConstraint
) -> Float64
MINDFul.getavailabletransmissionmoduleviewindex — Methodgetavailabletransmissionmoduleviewindex(
    nodeview::MINDFul.NodeView
) -> Vector{Int64}
MINDFul.getbaseurl — Methodgetbaseurl(
    remotehandler::MINDFul.AbstractIBNFHandler
) -> Any
Get the base URL of the HTTP server of a remote domain.
MINDFul.getcachedresults — Methodgetcachedresults(
    intcompalg::MINDFul.IntentCompilationAlgorithm
) -> Any
MINDFul.getcandidatepathsnum — Methodgetcandidatepathsnum(
    intcompalg::MINDFul.IntentCompilationAlgorithm
) -> Any
MINDFul.getcompliancetarget — Methodgetcompliancetarget(
    ac::MINDFul.AvailabilityConstraint
) -> Float64
MINDFul.getcompliancetarget — Methodgetcompliancetarget(
    ac::MINDFul.MutableAvailabilityConstraint
) -> Float64
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
) -> Any
MINDFul.getcurrentlinkstate — Methodgetcurrentlinkstate(
    oxcview::MINDFul.OXCView,
    ed::Graphs.SimpleGraphs.SimpleEdge
) -> Bool
MINDFul.getdatetime — Methodgetdatetime(
    intcompalg::MINDFul.BasicAlgorithmMemory
) -> Dates.DateTime
MINDFul.getdatetime — Methodgetdatetime(
    intcompalg::MINDFul.IntentCompilationAlgorithm
) -> Any
MINDFul.getdatetime — Methodgetdatetime(rct::MINDFul.ReturnCodeTime) -> Dates.DateTime
MINDFul.getdatetime — Methodgetdatetime(rct::MINDFul.ReturnUUIDTime) -> Dates.DateTime
MINDFul.getdestinationnodeallocations — Methodgetdestinationnodeallocations(
    lpintent::MINDFul.LightpathIntent
) -> MINDFul.EndNodeAllocations
MINDFul.getdictlinkempiricalavailabilities — Methodgetdictlinkempiricalavailabilities(
    ibnf;
    checkfirst,
    verbose,
    endtime
) -> Dict
Return a dictionary with keys the edges and values the empirical availabilities.
MINDFul.getdictlinkupdowntimes — Methodgetdictlinkupdowntimes(
    ibnf;
    checkfirst,
    verbose,
    endtime
) -> Dict
Return a dictionary with keys the edges and values the up and downtimes.
MINDFul.getempiricalavailability — Methodgetempiricalavailability(
    ibnf::MINDFul.IBNFramework,
    path::Vector{Int64};
    checkfirst,
    verbose,
    endtime
) -> Any
Calculate empirical availability of a path
MINDFul.getempiricalavailability — Methodgetempiricalavailability(
    ibnf::MINDFul.IBNFramework,
    ppath::Vector{Vector{Int64}};
    checkfirst,
    verbose,
    endtime
) -> Any
Calculate empirical availability of a protected path
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.getfirsthalfavailabilityconstraint — Methodgetfirsthalfavailabilityconstraint(
    splitglobalnode::MINDFul.SplitGlobalNode
) -> Union{Nothing, MINDFul.AvailabilityConstraint}
MINDFul.getibnagweights — Methodgetibnagweights(
    cr::MINDFul.CachedResults
) -> Matrix{Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}}
MINDFul.getibnfcomm — Methodgetibnfcomm(
    ibnf::MINDFul.IBNFramework
) -> MINDFul.IBNFCommunication
MINDFul.getibnfhandlergentoken — Methodgetibnfhandlergentoken(
    remotehandler::MINDFul.AbstractIBNFHandler
) -> Any
Get the generated token for authenticating a remote domain.
MINDFul.getibnfhandlerperm — Methodgetibnfhandlerperm(
    remotehandler::MINDFul.AbstractIBNFHandler
) -> Any
Get the established permission of a remote domain.
MINDFul.getibnfhandlerport — Methodgetibnfhandlerport(
    remotehandler::MINDFul.AbstractIBNFHandler
) -> Int64
Get the port of the server of a remote domain.
MINDFul.getibnfhandlerrecvtoken — Methodgetibnfhandlerrecvtoken(
    remotehandler::MINDFul.AbstractIBNFHandler
) -> Any
Get the received token for authenticating to a remote domain.
MINDFul.getibnfhandlerrsapublickey — Methodgetibnfhandlerrsapublickey(
    remotehandler::MINDFul.RemoteHTTPHandler
) -> String
Get the RSA public key of a remote domain.
MINDFul.getibnfhandlerrsasecret — Methodgetibnfhandlerrsasecret(
    remotehandler::MINDFul.RemoteHTTPHandler
) -> String
Get the RSA secret for authenticating a remote domain.
MINDFul.getibnfrsaprivatekey — Methodgetibnfrsaprivatekey(ibnf::MINDFul.IBNFramework) -> Any
Get the RSA private key of a local domain.
MINDFul.getibnfserver — Methodgetibnfserver(
    ibnf::MINDFul.IBNFramework
) -> Union{Nothing, HTTP.Servers.Server{HTTP.Servers.Listener{Nothing, Sockets.TCPServer}}, HTTP.Servers.Server{HTTP.Servers.Listener{MbedTLS.SSLConfig, Sockets.TCPServer}}}
Get the server of an IBNFramework.
MINDFul.getibnfwithid — Methodgetibnfwithid(
    ibnfs::Vector{<:MINDFul.IBNFramework},
    ibnfid::Base.UUID
) -> Union{Nothing, MINDFul.IBNFramework}
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
) -> Union{Nothing, 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.getidagnodeidxdict — Methodgetidagnodeidxdict(
    intentdaginfo::MINDFul.IntentDAGInfo
) -> Dict{Base.UUID, Int64}
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,
    chooseprotected,
    autoinstall
) -> 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 With chooseprotected::Int you can choose which protected path to select. Default is 1. With 0 you choose all. If an intent contains more than one ProtectedLightpathIntent there is no way to choose exactly. Pass autoinstall:Bool = true to ignore failed regions of the intent DAG and auto-choose protection path. It will choose the available path from 1 to n. chooseprotected must still be non-zero.
MINDFul.getidagnodeleafs2install — Methodgetidagnodeleafs2install(
    ibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID
) -> Vector{MINDFul.IntentDAGNode}
Return the leaf idagnodes to install. Code is very similar to getidagnodeleafs(::IntentDAG) but suited for exactly the isntallation scenario If installation is not possible return empty.
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.getintcompalg — Methodgetintcompalg(
    s::MINDFul.IBNFramework
) -> MINDFul.IntentCompilationAlgorithm
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
) -> Any
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.getlinkupdowntimes — Methodgetlinkupdowntimes(
    ibnf,
    edge;
    checkfirst,
    verbose,
    endtime
) -> MINDFul.UpDownTimes
Return the up and downtimes for the specific link
MINDFul.getlocalnodenum — Methodgetlocalnodenum(ibnf::MINDFul.IBNFramework) -> Any
Return the number of local nodes, i.e. not border nodes.
MINDFul.getloginterupdowntimes — Methodgetloginterupdowntimes(
    bam::MINDFul.BasicAlgorithmMemory
) -> Dict{MINDFul.GlobalEdge, Dict{Base.UUID, MINDFul.UpDownTimesNDatetime}}
MINDFul.getloginterupdowntimes — Methodgetloginterupdowntimes(
    intentcomp::MINDFul.IntentCompilationAlgorithmWithMemory
) -> Dict{MINDFul.GlobalEdge, Dict{Base.UUID, MINDFul.UpDownTimesNDatetime}}
MINDFul.getlogintrapaths — Methodgetlogintrapaths(
    bam::MINDFul.BasicAlgorithmMemory
) -> Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Dict{Vector{Vector{Int64}}, Int64}}
MINDFul.getlogintrapaths — Methodgetlogintrapaths(
    intentcomp::MINDFul.IntentCompilationAlgorithmWithMemory
) -> Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Dict{Vector{Vector{Int64}}, Int64}}
MINDFul.getlogtupletstate — Methodgetlogtupletstate(
    intentlogstatetuple::Tuple{Dates.DateTime, Enum{Int32}}
) -> Enum{Int32}
MINDFul.getlogtuplettime — Methodgetlogtuplettime(
    intentlogstatetuple::Tuple{Dates.DateTime, Enum{Int32}}
) -> Dates.DateTime
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.getmaximumsplitlevel — Methodgetmaximumsplitlevel(
    lsc::MINDFul.LimitedSplitConstraint
) -> Int64
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.getoxclliedges — Methodgetoxclliedges(
    oxclli::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Vector{Graphs.SimpleGraphs.SimpleEdge{Int64}}
MINDFul.getpath — Methodgetpath(lpintent::MINDFul.LightpathIntent) -> Vector{Int64}
MINDFul.getpath — Methodgetpath(
    lpr::MINDFul.LightpathRepresentation
) -> Vector{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.getpathdistance — Methodgetpathdistance(ws::Matrix, path::Vector{Int64}) -> Any
MINDFul.getpathdistance2 — Methodgetpathdistance2(ws::Matrix, path::Vector{Int64}) -> Any
MINDFul.getpathdistance3 — Methodgetpathdistance3(ws::Matrix, path::Vector{Int64}) -> Any
MINDFul.getpathsforprotectionnum — Methodgetpathsforprotectionnum(
    intcompalg::MINDFul.IntentCompilationAlgorithm
) -> Any
MINDFul.getprdestinationnodeallocations — Methodgetprdestinationnodeallocations(
    prlpintent::MINDFul.ProtectedLightpathIntent
) -> Vector{MINDFul.EndNodeAllocations}
MINDFul.getprpath — Methodgetprpath(
    prlpintent::MINDFul.ProtectedLightpathIntent
) -> Vector{Vector{Int64}}
MINDFul.getprsourcenodeallocations — Methodgetprsourcenodeallocations(
    prlpintent::MINDFul.ProtectedLightpathIntent
) -> Vector{MINDFul.EndNodeAllocations}
MINDFul.getprspectrumslotsrange — Methodgetprspectrumslotsrange(
    prlpintent::MINDFul.ProtectedLightpathIntent
) -> Vector{UnitRange{Int64}}
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.getreturncode — Methodgetreturncode(rct::MINDFul.ReturnCodeTime) -> Symbol
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.getrouterportrate — Methodgetrouterportrate(
    tmc::MINDFul.TransmissionModuleCompatibility
) -> Union{Nothing, Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}}
MINDFul.getrouterports — Methodgetrouterports(
    s::MINDFul.RouterView
) -> Vector{MINDFul.RouterPort}
MINDFul.getsecondhalfavailabilityconstraint — Methodgetsecondhalfavailabilityconstraint(
    splitglobalnode::MINDFul.SplitGlobalNode
) -> Union{Nothing, MINDFul.AvailabilityConstraint}
MINDFul.getsourcenodeallocations — Methodgetsourcenodeallocations(
    lpintent::MINDFul.LightpathIntent
) -> MINDFul.EndNodeAllocations
MINDFul.getsplitlevel — Methodgetsplitlevel(lsc::MINDFul.LimitedSplitConstraint) -> Int64
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.getupdowntimes! — Methodgetupdowntimes!(
    updowntimesndatetime::MINDFul.UpDownTimesNDatetime,
    ls::Array{Tuple{R, T}, 1}
) -> MINDFul.UpDownTimesNDatetime
getupdowntimes!(
    updowntimesndatetime::MINDFul.UpDownTimesNDatetime,
    ls::Array{Tuple{R, T}, 1},
    endtime
) -> MINDFul.UpDownTimesNDatetime
Incremeantaly update updowntimesndatetime given the new ls
MINDFul.getupdowntimes — Methodgetupdowntimes(
    ls::Array{Tuple{R, T}, 1}
) -> MINDFul.UpDownTimes
getupdowntimes(
    ls::Array{Tuple{R, T}, 1},
    endtime
) -> MINDFul.UpDownTimes
Get uptime and downtime periods from link states. Return a tuple with the first element being the uptimes in Milliseconds and the second the downtimes in Milliseconds. If endtime is different that the one in list, pass it.
MINDFul.getuuid — Methodgetuuid(rct::MINDFul.ReturnUUIDTime) -> Base.UUID
MINDFul.getyenpathsdict — Methodgetyenpathsdict(
    cr::MINDFul.CachedResults
) -> Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Vector{Int64}}}
MINDFul.getyenpathsdistsdict — Methodgetyenpathsdistsdict(
    cr::MINDFul.CachedResults
) -> Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, Vector{Unitful.Quantity{Float64, 𝐋, Unitful.FreeUnits{(km,), 𝐋, nothing}}}}
MINDFul.groomifllichildexists! — Methodgroomifllichildexists!(
    idag::AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{MINDFul.IntentDAGNode}, Nothing, MINDFul.IntentDAGInfo},
    idagnodegrandpa::MINDFul.IntentDAGNode,
    idagnodeparent::MINDFul.IntentDAGNode,
    lli::MINDFul.LowLevelIntent
) -> Bool
Groom (i.e. connect outgoing edge to the LLI) if it exists already as a child to idagnode Return true if it happens and false otherwise
MINDFul.handshake_init! — Methodhandshake_init!(
    ibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    encryptedsecret::String
) -> Any
Exchange of the handshake information with the remote IBN framework. Both domains will generate a token to their peer that must be attached in the subsequent requests for authentication. Each domain has previously set a permission level for each of its neighbours. The available functions of the remote IBN framework will also be sent for information.
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"#330#337"{MINDFul.var"#330#331#338"{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},
) -> SymbolThe returned algorithm can be customized as follows.
The major selection process is made on the source.
Interfaces needed:
getcandidatepathsnum(
    intentcompilationalgorithm::IntentCompilationAlgorithm)
 -> IntReturn the candidate paths with highest priority first as Vector{Vector{Int}}}. Return empty collection if non available. TODO docts protection: Protection paths... shouldnt end on border node !
prioritizepaths(
    ibnf::IBNFramework,
    idagnode::IntentDAGNode{<:ConnectivityIntent},
) -> 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}, Return the candidate router ports with highest priority first Return empty collection if non available.
prioritizerouterport(
    ibnf::IBNFramework,
    idagnode::IntentDAGNode{<:ConnectivityIntent},
    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},
    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},
    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},
    node::LocalNode
) -> Vector{Int}MINDFul.intradomaincompilationtemplate_destination! — Methodintradomaincompilationtemplate_destination!(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    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},
    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},
    node::LocalNode,
    path::Union{Nothing, Vector{LocalNode}},
    routerportrate::GBPSf,
    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},
    node::LocalNode
) -> Vector{Int}MINDFul.ipfiltering — Methodipfiltering(tcp, neighbourips) -> Bool
Function to filter incoming TCP connections based on the IP address. It checks if the IP address of the incoming connection is either localhost or in the list of neighbour IPs. This is useful to prevent unauthorized access to the IBNFramework server.
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.isoxcllifail — Methodisoxcllifail(
    ibnf::MINDFul.IBNFramework,
    oxclli::MINDFul.OXCAddDropBypassSpectrumLLI
) -> Any
Return true if oxclli is involved with failed equipment
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,
    choosealternativeorder
) -> Any
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
- choosealternativeorder::Int. 0to error in case multiple logical orders are available and the index of the alternative otherwise.
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.isthesame — Methodisthesame(obj1, obj2) -> Any
Recursively compare all fields until a primitive element type is found
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 signalMINDFul.logicalordergetlightpaths — Methodlogicalordergetlightpaths(
    lo::Vector{<:MINDFul.LowLevelIntent}
) -> Vector
Return a Vector{Vector{Int}} being the lightpaths from the logical low level intent orderMINDFul.logicalordergetpath — Methodlogicalordergetpath(
    lo::Vector{<:MINDFul.LowLevelIntent}
) -> Vector{Int64}
Return a Vector{Int} with the path given from the logical low level intent orderMINDFul.logicalorderissinglelightpath — Methodlogicalorderissinglelightpath(
    lo::Vector{<:MINDFul.LowLevelIntent}
) -> Bool
Check that the LowLevelIntents are consisting a single LightPath implementationThis means that the order of the LLIs should be (RouterPortLLI) -> (TransmissionModuleLLI) -> OXCAddDropLLI -> (TranmsissionModuleLLI) -> (RouterPortLLI)
MINDFul.logintrapathsandinterintents! — Methodlogintrapathsandinterintents!(
    ibnf::MINDFul.IBNFramework{A, B, C, D, R} where {A, B, C, D, R<:MINDFul.IntentCompilationAlgorithmWithMemory},
    idagnode::MINDFul.IntentDAGNode
)
MINDFul.main — Methodmain(; configfile)
main() function to initialize the MINDFul IBN framework. It expects the path of the configuration file in TOML format, in order to set up the IBNFrameworks for each domain and start the HTTP server that enables communication between domains. The path can be absolute or relative to the current working directory. The paths of the files referenced in the configuration file can be absolute or relative to the directory of the configuration file.
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},
    protectedpaths::Vector{Vector{Int64}}
) -> Vector{Vector{Union{Base.UUID, Graphs.SimpleGraphs.SimpleEdge{Int64}}}}
Return a Dict{Edge{LocalNode}, Vector{GroomingPossibility}}
MINDFul.prioritizegrooming_exactly — Methodprioritizegrooming_exactly(
    ibnf::MINDFul.IBNFramework{A, B, C, D, MINDFul.BestEmpiricalAvailabilityCompilation} where {A, B, C, D},
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent};
    candidatepaths
) -> Vector{Vector{Union{Base.UUID, Graphs.SimpleGraphs.SimpleEdge{Int64}}}}
Return suggestion that match exactly the candidatepaths, such that availability is not changed. All the protection paths need to be matched exactly.
MINDFul.prioritizegrooming_none — MethodDon't do grooming
MINDFul.prioritizepaths_bestempiricalavailability — Methodprioritizepaths_bestempiricalavailability(
    ibnf::MINDFul.IBNFramework{A, B, C, D, MINDFul.BestEmpiricalAvailabilityCompilation} where {A, B, C, D},
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent}
) -> Vector{Vector{Vector{Int64}}}
Return a Vector{Vector{Int}} vector of vector of paths. Each element in the outer vector is a combination of paths to be used for protection. The first path is supposed to be the one deployed and all other are the protection. Constrained to return protection only up to 2 paths
MINDFul.prioritizepaths_shortest — Methodprioritizepaths_shortest(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent}
) -> Vector{Vector{Vector{Int64}}}
MINDFul.prioritizerouterports_default — Functionprioritizerouterports_default(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64
) -> Vector{Int64}
prioritizerouterports_default(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64,
    transmissionmoderate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
) -> Vector{Int64}
MINDFul.prioritizerouterports_lowestrate — Functionprioritizerouterports_lowestrate(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64
) -> Vector{Int64}
prioritizerouterports_lowestrate(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64,
    transmissionmoderate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
) -> Vector{Int64}
Same as prioritizerouterports_lowestrate but with a sort! in the end
MINDFul.prioritizesplitbordernodes_shortestorshortestrandom — Methodprioritizesplitbordernodes_shortestorshortestrandom(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent}
) -> Vector
Return a priority list of GlobalNode. 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}
) -> Vector{MINDFul.SplitGlobalNode}
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. This is irrelevant to all availabilities decision. It just adapts the availability constraints based on the estimations.
MINDFul.prioritizetransmdlmode_cheaplowrate — Functionprioritizetransmdlmode_cheaplowrate(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64,
    path::Union{Nothing, Vector{Int64}},
    routerportrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
) -> Vector{Tuple{Int64, Int64}}
prioritizetransmdlmode_cheaplowrate(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64,
    path::Union{Nothing, Vector{Int64}},
    routerportrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}},
    transmdlcompat::Union{Nothing, MINDFul.TransmissionModuleCompatibility}
) -> Vector{Tuple{Int64, Int64}}
Same as prioritizetransmdlmode_default with a sortperm! 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.prioritizetransmdlmode_default — Functionprioritizetransmdlmode_default(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64,
    path::Union{Nothing, Vector{Int64}},
    routerportrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}}
) -> Vector{Tuple{Int64, Int64}}
prioritizetransmdlmode_default(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    node::Int64,
    path::Union{Nothing, Vector{Int64}},
    routerportrate::Unitful.Quantity{Float64, Data 𝐓^-1, Unitful.FreeUnits{(Gbps,), Data 𝐓^-1, nothing}},
    transmdlcompat::Union{Nothing, MINDFul.TransmissionModuleCompatibility}
) -> Vector{Tuple{Int64, Int64}}
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.readb64keys — Methodreadb64keys(finalkeyfile::String) -> String
Function to read a base64 encoded key from a PEM file.
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_init! — Methodrequestavailablecompilationalgorithms_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnf::MINDFul.IBNFramework
) -> Vector
Compilation algorithms are given as symbols because they might not be available programmatically to different IBN frameworks
MINDFul.requestavailablecompilationalgorithms_init! — Methodrequestavailablecompilationalgorithms_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler
) -> Any
MA1069 implementation
MINDFul.requestcompileintent_init! — Functionrequestcompileintent_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    idagnodeid::Base.UUID;
    ...
) -> Any
requestcompileintent_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    idagnodeid::Base.UUID,
    compilationalgorithmkey::Symbol;
    ...
) -> Any
requestcompileintent_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    idagnodeid::Base.UUID,
    compilationalgorithmkey::Symbol,
    compilationalgorithmargs::Tuple;
    verbose,
    offsettime
) -> Any
MA1069 implementation
MINDFul.requestcompileintent_init! — Methodrequestcompileintent_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> Symbol
The initiator domain myibnf asks remoteibnf to compile the external remote intent idagnodeid with the specified compilation algorithm
MINDFul.requestcompileintent_term! — Methodrequestcompileintent_term!(
    remoteibnfhandler::MINDFul.AbstractIBNFHandler,
    myibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> Symbol
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_init! — Methodrequestdelegateintent_init!(
    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_init! — Methodrequestdelegateintent_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    intent::MINDFul.AbstractIntent,
    internalidagnodeid::Base.UUID;
    offsettime
) -> Any
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_init — Methodrequestibnattributegraph_init(
    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_term! — Methodrequestibnattributegraph_term!(
    remoteibnfhandler::MINDFul.AbstractIBNFHandler,
    myibnf::MINDFul.IBNFramework
) -> AttributeGraphs.AttributeGraph{Int64, Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Vector{T}, Dict{Graphs.SimpleGraphs.SimpleEdge{Int64}, MINDFul.EdgeView}, Base.UUID} where T<:MINDFul.NodeView
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
) -> MINDFul.ReturnCodeTime
MINDFul.requestinstallintent_term! — Methodrequestinstallintent_term!(
    remoteibnfhandler::MINDFul.AbstractIBNFHandler,
    myibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> MINDFul.ReturnCodeTime
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_init — Methodrequestissatisfied_init(
    myibnf::MINDFul.IBNFramework,
    remoteibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    onlyinstalled,
    noextrallis,
    choosealternativeorder
) -> Any
Request to remoteibnf whether the idagnode is theoretically satisfied
MINDFul.requestissatisfied_init — Methodrequestissatisfied_init(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    idagnodeid::Base.UUID;
    onlyinstalled,
    noextrallis,
    choosealternativeorder
) -> Any
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_init! — Methodrequestremoteintentstateupdate_init!(
    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, MINDFul.ReturnCodeTime}
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, MINDFul.ReturnCodeTime}
MINDFul.requestspectrumavailability_init! — Methodrequestspectrumavailability_init!(
    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_init! — Methodrequestspectrumavailability_init!(
    myibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    ge::MINDFul.GlobalEdge
) -> Any
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
) -> MINDFul.ReturnCodeTime
MINDFul.requestuninstallintent_term! — Methodrequestuninstallintent_term!(
    remoteibnfhandler::MINDFul.AbstractIBNFHandler,
    myibnf::MINDFul.IBNFramework,
    idagnodeid::Base.UUID;
    verbose,
    offsettime
) -> MINDFul.ReturnCodeTime
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.rsaauthentication_encrypt — Methodrsaauthentication_encrypt(
    remoteibnfhandler::MINDFul.RemoteHTTPHandler,
    unencryptedsecret::String
) -> String
Function to perform RSA encryption on a secret using the public key of the remote IBNF.
MINDFul.rsaauthentication_init — Methodrsaauthentication_init(
    ibnf::MINDFul.IBNFramework,
    remoteibnfhandler::MINDFul.RemoteHTTPHandler
) -> String
Exchange of encrypted secrets via RSA algorithm for mutual authentication with the remote domain. The initiator domain will generate a secret, encrypt it with the public key of the remote domain, and send it. The remote domain will decrypt the secret with its private key, and return the decrypted secret concatenated with a new secret (the concatenation is encrypted with the initiator's public key). The initiator domain will then decrypt with its private key, check the initial secret and return the new secret encrypted in the handshake.
MINDFul.sendrequest — Methodsendrequest(
    ibnf::MINDFul.IBNFramework,
    remotehandler::MINDFul.RemoteHTTPHandler,
    endpoint::String,
    data::Dict;
    offsettime
) -> Response
Function used to send a request to a remote IBNFramework handler. It also handles the initial authentication and sends the requests with the provided data.
MINDFul.setadddropport! — Methodsetadddropport!(
    ena::MINDFul.MutableEndNodeAllocations,
    intval::Union{Nothing, Int64}
) -> Union{Nothing, Int64}
MINDFul.setavailabilityrequirement! — Methodsetavailabilityrequirement!(
    mav::MINDFul.MutableAvailabilityConstraint,
    newval::Float64
) -> Float64
MINDFul.setcompliancetarget! — Methodsetcompliancetarget!(
    mav::MINDFul.MutableAvailabilityConstraint,
    newval::Float64
) -> Float64
MINDFul.setdatetime! — Methodsetdatetime!(
    intcompalg::MINDFul.BasicAlgorithmMemory,
    currentdatetime::Dates.DateTime
) -> Dates.DateTime
MINDFul.setdatetime! — Methodsetdatetime!(
    intcompalg::MINDFul.IntentCompilationAlgorithm,
    currentdatetime::Dates.DateTime
) -> Dates.DateTime
MINDFul.setibnfhandlergentoken! — Methodsetibnfhandlergentoken!(
    remotehandler::MINDFul.AbstractIBNFHandler,
    generatedtoken::String
) -> String
Set the generated token for authenticating a remote domain.
MINDFul.setibnfhandlerrecvtoken! — Methodsetibnfhandlerrecvtoken!(
    remotehandler::MINDFul.AbstractIBNFHandler,
    receivedtoken::String
) -> String
Set the received token for authenticating to a remote domain.
MINDFul.setibnfhandlerrsasecret! — Methodsetibnfhandlerrsasecret!(
    remotehandler::MINDFul.RemoteHTTPHandler,
    secret::String
) -> String
Set the RSA secret for authenticating a remote domain.
MINDFul.setibnfserver! — Methodsetibnfserver!(
    ibnf::MINDFul.IBNFramework,
    server::Union{HTTP.Servers.Server{HTTP.Servers.Listener{Nothing, Sockets.TCPServer}}, HTTP.Servers.Server{HTTP.Servers.Listener{MbedTLS.SSLConfig, Sockets.TCPServer}}}
) -> Union{HTTP.Servers.Server{HTTP.Servers.Listener{Nothing, Sockets.TCPServer}}, HTTP.Servers.Server{HTTP.Servers.Listener{MbedTLS.SSLConfig, Sockets.TCPServer}}}
Set the running server of an IBNFramework.
MINDFul.setlinkstate! — Methodsetlinkstate!(
    ibnf::MINDFul.IBNFramework,
    edge::Graphs.SimpleGraphs.SimpleEdge,
    operatingstate::Bool;
    offsettime
) -> MINDFul.ReturnCodeTime
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
) -> MINDFul.ReturnCodeTime
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},
    intradomainalgfun::Function,
    splitbordernode::MINDFul.SplitGlobalNode,
    cachedintentresult::Dict{MINDFul.ConnectivityIntent, Symbol};
    verbose,
    offsettime
) -> Symbol
MINDFul.splitandcompileintradomainconnecivityintent! — Methodsplitandcompileintradomainconnecivityintent!(
    ibnf::MINDFul.IBNFramework,
    idagnode::MINDFul.IntentDAGNode{<:MINDFul.ConnectivityIntent},
    intradomainalgfun::Function,
    splitglobalnode::MINDFul.SplitGlobalNode,
    cachedintentresult::Dict{MINDFul.ConnectivityIntent, Symbol};
    verbose,
    prioritizegrooming,
    prioritizesplitnodes,
    prioritizesplitbordernodes,
    maximumsplitlevel,
    offsettime
)
Splits connectivity intent on splitglobalnode with O-E-O conversion
MINDFul.stage! — Methodstage!(
    resourceview::MINDFul.ReservableResourceView,
    lli::MINDFul.LowLevelIntent;
    verbose
) -> Symbol
MINDFul.stageaddidagnode! — Methodstageaddidagnode!(
    ibnf::MINDFul.IBNFramework,
    lli::MINDFul.LowLevelIntent;
    parentid,
    intentissuer,
    offsettime
) -> Union{Nothing, Symbol}
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;
    about2install
) -> Union{Nothing, Symbol}
dostage true for stage, false for unstage about2install = true only when dostage=false for unstaging when groing to installed state. This is only used to not deallocate the spectrum.
MINDFul.startibnserver! — Methodstartibnserver!(
    ibnfsdict::Dict{Int64, MINDFul.IBNFramework},
    encryption::Bool,
    neighbourips::Vector{String},
    port::Int64;
    verbose
) -> HTTP.Servers.Server
Function to start the HTTP server of an IBNFramework.
MINDFul.unreserve! — Methodunreserve!(
    sdn::MINDFul.AbstractSDNController,
    resourceview::MINDFul.ReservableResourceView,
    dagnodeid::Base.UUID;
    verbose
) -> Symbol
MINDFul.unstage! — Methodunstage!(
    resourceview::MINDFul.ReservableResourceView,
    lli::MINDFul.LowLevelIntent;
    verbose,
    about2install
) -> Symbol
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.updatelogintentcomp! — Methodupdatelogintentcomp!(
    ibnf::MINDFul.IBNFramework{A, B, C, D, R} where {A, B, C, D, R<:MINDFul.IntentCompilationAlgorithmWithMemory};
    offsettime
)
MINDFul.updatelogintentcomp! — Methodupdatelogintentcomp!(
    ibnf::MINDFul.IBNFramework{A, B, C, D, E};
    offsettime
)
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
MINDFul.@returnwtimeiffalse — MacroReturn a return ReturnCodeTime(ReturnCodes.Fail, @logtime) if the expression ex evaluates to false. That need to happen inside a @recvtime function 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