Skip to content

Commit

Permalink
Merge pull request #526 from openBackhaul/develop
Browse files Browse the repository at this point in the history
RO v2.1.0_spec
  • Loading branch information
openBackhaul authored Dec 10, 2023
2 parents 55caaef + cfbc5b4 commit 8eacfe0
Show file tree
Hide file tree
Showing 9 changed files with 11,857 additions and 7,112 deletions.
9,228 changes: 5,200 additions & 4,028 deletions spec/RegistryOffice+config.json

Large diffs are not rendered by default.

1,026 changes: 689 additions & 337 deletions spec/RegistryOffice+forwardings.yaml

Large diffs are not rendered by default.

102 changes: 51 additions & 51 deletions spec/RegistryOffice+profileInstances.yaml

Large diffs are not rendered by default.

350 changes: 190 additions & 160 deletions spec/RegistryOffice+services.yaml

Large diffs are not rendered by default.

7,885 changes: 5,349 additions & 2,536 deletions spec/RegistryOffice.yaml

Large diffs are not rendered by default.

40 changes: 40 additions & 0 deletions spec/diagrams/is002_DeregisterApplication.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
@startuml is002_DeregisterApplication
skinparam responseMessageBelowArrow true

title
is-006: DeregistrationNotification
is-011: DeRegistrationBroadcast
end title

participant "OR://v1/bequeath-your-data-and-die" as OldRelease
participant "RO://v1/deregister-application" as RO
participant "TAC://v1/disregard-application" as TacDisregardApp
participant "ALL://v1/dispose-remainders-of-deregistered-application" as AllDisposeRemainders

OldRelease -> RO : {applicationName, releaseNumber}
activate RO

skinparam NoteBackgroundColor salmon
note left RO
Remark:
Service /v1/deregister-application
and Callback DeregistrationNotification
got obsoleted by introducing the Basic Service
/v1/dispose-remainders-of-deregistered-application
in ApplicationPattern v2.1.0
end note
skinparam NoteBackgroundColor default

RO -> TacDisregardApp : {applicationName, releaseNumber}
TacDisregardApp --> RO : 204

skinparam NoteBackgroundColor lightgreen
note left RO
new
end note
RO -> AllDisposeRemainders : {applicationName, releaseNumber}
AllDisposeRemainders --> RO : 204

deactivate RO

@enduml
Binary file added spec/diagrams/is002_DeregisterApplication.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
338 changes: 338 additions & 0 deletions spec/diagrams/is010_regardApprovalStatusCausesSequence.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,338 @@
@startuml is010_regardApprovalStatusCausesSequence
skinparam responseMessageBelowArrow true

title
BarringApplicationCausesDeregisteringOfApplication
ApprovingApplicationCausesConnectingWith
ApprovingApplicationCausesPreparingTheEmbedding
ApprovingApplicationCausesConnectingToBroadcast
end title

participant "TAR" as tar
participant "TAR://v1/document-embedding-status" as tarReceiver
participant "RO://v1/regard-updated-approval-status" as ro

participant "RO://v1/deregister-application" as roDeRegister

participant "ALT://v1/regard-application" as altRegardApplication
participant "OKM://v1/regard-application" as okmRegardApplication
participant "EaTL://v1/regard-application" as eatlRegardApplication
participant "AA://v1/regard-application" as aaRegardApplication
participant "OL://v1/regard-application" as olRegardApplication

participant "ALT://v1/add-operation-client-to-link" as altAddClientToLink
participant "NA://v1/inform-about-preceding-release" as naInformAboutOR
participant "OR://v1/update-client-of-subsequent-release" as orUpdateNR
participant "NA://v1/embed-yourself" as newApplication

tar -> ro : {newApplicationName, releaseNumber, approvalStatus}
activate ro
tar <-- ro : {processId}

note right ro
IF approvalStatus == BARRED
<u>BarringApplicationCausesDeregisteringOfApplication</u>
end note
ro -> roDeRegister : {newApplicationName, releaseNumber)
ro <-- roDeRegister : 204

note over roDeRegister #WhiteSmoke
New application will be totally removed
from the entire MW SDN application layer
(includes TAR, so no response required)
end note

note over ro
<u>ApprovingApplicationCausesConnectingWith.Alt</u>
end note
ro -> altRegardApplication : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- altRegardApplication : {successfully-connected, reason-of-failure}

note left ro
IF (NOT 200) OR (successfully-connected==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>ApprovingApplicationCausesConnectingWith.Okm</u>
end note
ro -> okmRegardApplication : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- okmRegardApplication : {successfully-connected, reason-of-failure}

note left ro
IF (NOT 200) OR (successfully-connected==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>ApprovingApplicationCausesConnectingWith.Eatl</u>
end note
ro -> eatlRegardApplication : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- eatlRegardApplication : {successfully-connected, reason-of-failure}

note left ro
IF (NOT 200) OR (successfully-connected==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>ApprovingApplicationCausesConnectingWith.Aa</u>
end note
ro -> aaRegardApplication : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- aaRegardApplication : {successfully-connected, reason-of-failure}

note left ro
IF (NOT 200) OR (successfully-connected==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>ApprovingApplicationCausesConnectingWith.Ol</u>
end note
ro -> olRegardApplication : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- olRegardApplication : {successfully-connected, reason-of-failure}

note left ro
IF (NOT 200) OR (successfully-connected==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateLinkToGetOldRelease</u>
Request for automatically creating the Link:
RO => NA://v1/inform-about-preceding-release
end note
ro -> altAddClientToLink : { servingApplicationName == requestBody.newApplicationName,\n servingApplicationReleaseNumber == requestBody.releaseNumber,\n operationName == /v1/inform-about-preceding-release,\n consumingApplicationName == RegistryOffice,\n consumingApplicationReleaseNumber == 2.1.0 } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>RequestForOldRelease</u>
end note
ro -> naInformAboutOR
ro <-- naInformAboutOR : {oldReleaseApplicationName, releaseNumber}

note left ro
IF (NOT 200)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateLinkToUpdateNewReleaseClient</u>
Request for automatically creating the Link:
RO => OR://v1/update-client-of-subsequent-release
end note
ro -> altAddClientToLink : { servingApplicationName == RequestForOldRelease.responseBody#applicationName,\n servingApplicationReleaseNumber == RequestForOldRelease.responseBody#releaseNumber,\n operationName == /v1/update-client-of-subsequent-release,\n consumingApplicationName == RegistryOffice,\n consumingApplicationReleaseNumber == 2.1.0 } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>RequestForUpdatingNewReleaseClient</u>
end note
ro -> orUpdateNR : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- orUpdateNR : {bequeathYourDataAndDieOperation, dataTransferOperationsList}

note left ro
IF (NOT 200)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateLinkForBequeathYourData</u>
Request for automatically creating the Link:
NA => OR://v1/bequeath-your-data-and-die
end note
ro -> altAddClientToLink : { servingApplicationName == oldReleaseApplicationName,\n servingApplicationReleaseNumber == releaseNumber,\n operationName == /v1/bequeath-your-data-and-die,\n consumingApplicationName == requestBody.newApplicationName,\n consumingApplicationReleaseNumber == requestBody.releaseNumber } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateFurtherLinksForTransferringData</u>
Potentially several requests for automatically creating Links:
OR => NA:// ... according to RequestForUpdatingNewReleaseClient.responseBody#dataTransferOperationsList
end note
ro -> altAddClientToLink : { servingApplicationName == requestBody.newApplicationName,\n servingApplicationReleaseNumber == requestBody.releaseNumber,\n operationName == [RequestForOldRelease.responseBody#dataTransferOperationsList],\n consumingApplicationName == oldReleaseApplicationName,\n consumingApplicationReleaseNumber == releaseNumber } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateLinkForPromptingEmbedding</u>
Request for automatically creating the Link:
RO => NA://v1/embed-yourself
end note
ro -> altAddClientToLink : { servingApplicationName == requestBody.newApplicationName,\n servingApplicationReleaseNumber == requestBody.releaseNumber,\n operationName == /v1/embed-yourself,\n consumingApplicationName == RegistryOffice,\n consumingApplicationReleaseNumber == 2.1.0 } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note right ro #WhiteSmoke
Attention:
The next process step should be initiated by all Links from CreateLinkForBequeathYourData, CreateFurtherLinksForTransferringData and CreateLinkForPromptingEmbedding being actually created.
In other cases, the next step gets initiated by its OperationKey being updated.
Links from CreateLinkForBequeathYourData and CreateFurtherLinksForTransferringData will be created between the new application and the old release.
RO receives no indication of successful execution.
Consequently, RO might trigger the embedding process before all Links that are required for its successful execution have been created.
end note

note over ro
<u>RequestForEmbedding</u>
end note
ro -> newApplication : {..., oldReleaseProtocol, oldReleaseAddress, oldReleasePort, ...}
ro <-- newApplication : 204

note right ro #WhiteSmoke
This will start an embedding process, which is individual to the respective application.
A Link between the new application and the /v1/bequeath-your-data-and-die service at the preceding release got created,
but further Links might be required for the individual embedding process.
The Links required for the bequeath-your-data-and-die process should be covered mostly, either by former operating or by
the by dataTransferOperationsList.
end note

note left ro
IF (NOT 200)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note


note over ro
<u>CreateLinkForUpdatingClient</u>
Request for automatically creating the Link:
RO => NA://v1/update-client
end note
ro -> altAddClientToLink : { servingApplicationName == requestBody.newApplicationName,\n servingApplicationReleaseNumber == requestBody.releaseNumber,\n operationName == /v1/update-client,\n consumingApplicationName == RegistryOffice,\n consumingApplicationReleaseNumber == 2.1.0 } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateLinkForUpdatingOperationClient</u>
Request for automatically creating the Link:
RO => NA://v1/update-operation-client
end note
ro -> altAddClientToLink : { servingApplicationName == requestBody.newApplicationName,\n servingApplicationReleaseNumber == requestBody.releaseNumber,\n operationName == /v1/update-operation-client,\n consumingApplicationName == RegistryOffice,\n consumingApplicationReleaseNumber == 2.1.0 } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
<u>CreateLinkForDisposingRemainders</u>
Request for automatically creating the Link:
RO => NA://v1/dispose-remainders-of-deregistered-application
end note
ro -> altAddClientToLink : { servingApplicationName == requestBody.newApplicationName,\n servingApplicationReleaseNumber == requestBody.releaseNumber,\n operationName == /v1/dispose-remainders-of-deregistered-application,\n consumingApplicationName == RegistryOffice,\n consumingApplicationReleaseNumber == 2.1.0 } (apiKey)
ro <-- altAddClientToLink : {client-successfully-added, reason-of-failure}

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note
tarReceiver <- ro : {successfully-embedded==true }

deactivate ro

@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 8eacfe0

Please sign in to comment.