Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V2.1.1_spec #560

Merged
merged 6 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions spec/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# RegistryOffice Specification

### Diagrams
- [Collection of Diagrams](./diagrams)

### ServiceList
- [RegistryOffice+services](./RegistryOffice+services.yaml)

Expand Down
589 changes: 330 additions & 259 deletions spec/RegistryOffice+config.json

Large diffs are not rendered by default.

254 changes: 138 additions & 116 deletions spec/RegistryOffice+forwardings.yaml

Large diffs are not rendered by default.

32 changes: 22 additions & 10 deletions spec/RegistryOffice+profileInstances.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -187,16 +187,6 @@ profile-instances:
configuration:
value-reference: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-okm-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number'

- profile-name: 'GenericResponseProfile'
uuid: 'ro-2-1-0-response-p-015'
capability:
operation-name: '/v1/list-applications-in-generic-representation'
field-name-reference: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-cc-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name'
description: 'List of registered application names and release numbers'
datatype: 'string'
configuration:
value-reference: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-cc-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number'


- profile-name: 'FileProfile'
uuid: 'ro-2-1-0-file-p-000'
Expand All @@ -212,6 +202,28 @@ profile-instances:

- profile-name: 'IntegerProfile'
uuid: 'ro-2-1-0-integer-p-000'
capability:
integer-name: 'maximumWaitTimeToReceiveOperationKey'
purpose: 'Creating a Link in ALT was successful if an OperationKey could be received. This attribute limits waiting for the OperationKey to be received.'
unit: 'millisecond'
minimum: 0
maximum: 5000
configuration:
integer-value: 500

- profile-name: 'IntegerProfile'
uuid: 'ro-2-1-0-integer-p-001'
capability:
integer-name: 'maximumNumberOfAttemptsToCreateLink'
purpose: 'Creating a Link in ALT may fail because background processes are not finished. This attribute limits the number of attempts to create the Link.'
unit: 'attempt'
minimum: 0
maximum: 20
configuration:
integer-value: 5

- profile-name: 'IntegerProfile'
uuid: 'ro-2-1-0-integer-p-010'
capability:
integer-name: 'waitTimeToApprove'
unit: 'second'
Expand Down
1 change: 1 addition & 0 deletions spec/RegistryOffice+profiles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ profiles:
uuid: '^[a-z]{2,6}-([0-9]+)-([0-9]+)-([0-9]+)-integer-p-[0-9]{3}$'
capability:
integer-name: string
purpose: string
unit: string
minimum: integer
maximum: integer
Expand Down
10 changes: 3 additions & 7 deletions spec/RegistryOffice+services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ servers:
uuid: ro-2-1-0-op-s-is-013
http-server:
own-application-name: RegistryOffice
own-release-number: 2.1.0
own-release-number: 2.1.1
uuid: ro-2-1-0-http-s-000
tcp-server:
- description: Without TLS layer
Expand Down Expand Up @@ -124,15 +124,11 @@ clients:
basic:
individual:
- operation-name: /v1/inquire-application-type-approvals
uuid: ro-2-1-0-op-c-im-nr-2-1-0-000
- operation-name: /v1/notify-deregistrations
uuid: ro-2-1-0-op-c-im-nr-2-1-0-001
- operation-name: /v1/notify-approvals
uuid: ro-2-1-0-op-c-im-nr-2-1-0-002
- operation-name: /v1/notify-withdrawn-approvals
uuid: ro-2-1-0-op-c-im-nr-2-1-0-003
- operation-name: /v2/register-application
uuid: ro-2-1-0-op-c-im-nr-2-1-0-005
- operation-name: /v1/notify-embedding-status-changes
uuid: ro-2-1-0-op-c-im-nr-2-1-0-006
service:
basic:
individual:
Expand Down
1,687 changes: 687 additions & 1,000 deletions spec/RegistryOffice.yaml

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions spec/diagrams/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# RegistryOffice Diagrams
.
.
![DeregistrationNotification and DeRegistrationBroadcast](./is002_DeregisterApplication.png)
.
.
![BarringApplicationCausesDeregisteringOfApplication, ApprovingApplicationCausesConnectingWith, ApprovalNotification, ApprovingApplicationCausesPreparingTheEmbedding and ApprovingApplicationCausesConnectingToBroadcast](./is010_regardApprovalStatusCausesSequence.png)
.
.
139 changes: 116 additions & 23 deletions spec/diagrams/is010_regardApprovalStatusCausesSequence.plantuml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ skinparam responseMessageBelowArrow true
title
BarringApplicationCausesDeregisteringOfApplication
ApprovingApplicationCausesConnectingWith
ApprovalNotification
ApprovingApplicationCausesPreparingTheEmbedding
ApprovingApplicationCausesConnectingToBroadcast
end title
Expand All @@ -20,6 +21,8 @@ participant "EaTL://v1/regard-application" as eatlRegardApplication
participant "AA://v1/regard-application" as aaRegardApplication
participant "OL://v1/regard-application" as olRegardApplication

participant "subscribers://v1/regard-application" as RegardApplicationNotification

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
Expand Down Expand Up @@ -118,27 +121,16 @@ terminate process with response
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
note over ro #LightSkyBlue
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
note over ro #LightSkyBlue
<u>ApprovalNotification</u>
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}
ro -> RegardApplicationNotification : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- RegardApplicationNotification : 204

note over ro
ELSE
end note

note over ro
<u>RequestForOldRelease</u>
Expand Down Expand Up @@ -176,10 +168,25 @@ note over ro
ELSE
end note

note left ro #Pink
OKM addressing RO://v1/update-operation-key
is indicating successful creation of the Link
IF waiting > maximumWaitTimeToReceiveOperationKey
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro #orange
IF (oldReleaseApplicationName != "OldRelease")
AND (HttpClient for oldReleaseApplicationName exists in RO)
<u>RequestForUpdatingNewReleaseClient</u>

After receiving an updated operation-key
for the operation-client
oldReleaseApplicationName://v1/update-client-of-subsequent-release:
end note
ro -> orUpdateNR : {newApplicationName, releaseNumber, TCP/IP address}
ro <-- orUpdateNR : {bequeathYourDataAndDieOperation, dataTransferOperationsList}
Expand All @@ -194,6 +201,23 @@ note over ro
ELSE
end note

note over ro #LightCoral
RO does not know, whether ALT already
contains an updated NewRelease client at the OldRelease
end note

note over ro #Pink
attempts = 0
end note

note over ro #Pink
mark#1
end note

note over ro #Pink
attempts = attempts + 1
end note

note over ro #orange
IF (oldReleaseApplicationName != "OldRelease")
AND (HttpClient for oldReleaseApplicationName exists in RO)
Expand All @@ -204,6 +228,21 @@ 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 #Pink
IF ( (attempts<=maximumNumberOfAttemptsToCreateLink)
AND
(client-successfully-added==false)
AND
( (reason-of-failure==ALT_SERVING_APPLICATION_NAME_UNKNOWN)
OR (reason-of-failure==ALT_SERVING_APPLICATION_RELEASE_NUMBER_UNKNOWN)
Return to mark#1
)
end note

note over ro
ELSE
end note

note left ro
IF (NOT 200) OR (client-successfully-added==false)
terminate process with response
Expand Down Expand Up @@ -252,16 +291,22 @@ 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.
note left ro #Pink
OKM addressing RO://v1/update-operation-key
is indicating successful creation of the Link
IF waiting > maximumWaitTimeToReceiveOperationKey
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
After receiving an updated operation-key
for the operation-client
NewApp://v1/embed-yourself

<u>RequestForEmbedding</u>
end note
ro -> newApplication : {..., oldReleaseProtocol, oldReleaseAddress, oldReleasePort, ...}
Expand Down Expand Up @@ -304,7 +349,22 @@ note over ro
ELSE
end note

note left ro #Pink
OKM addressing RO://v1/update-operation-key
is indicating successful creation of the Link
IF waiting > maximumWaitTimeToReceiveOperationKey
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
After receiving an updated operation-key
for the operation-client
NewApp://v1/update-client

<u>CreateLinkForUpdatingOperationClient</u>
Request for automatically creating the Link:
RO => NA://v1/update-operation-client
Expand All @@ -322,7 +382,22 @@ note over ro
ELSE
end note

note left ro #Pink
OKM addressing RO://v1/update-operation-key
is indicating successful creation of the Link
IF waiting > maximumWaitTimeToReceiveOperationKey
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro
After receiving an updated operation-key
for the operation-client
NewApp://v1/update-operation-client

<u>CreateLinkForDisposingRemainders</u>
Request for automatically creating the Link:
RO => NA://v1/dispose-remainders-of-deregistered-application
Expand All @@ -339,6 +414,24 @@ tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure
note over ro
ELSE
end note

note left ro #Pink
OKM addressing RO://v1/update-operation-key
is indicating successful creation of the Link
IF waiting > maximumWaitTimeToReceiveOperationKey
end note
tarReceiver <- ro : {processId, successfully-embedded==false, reason-of-failure}

note over ro
ELSE
end note

note over ro #Pink
After receiving an updated operation-key
for the operation-client
NewApp://v1/dispose-remainders-of-deregistered-application
end note

tarReceiver <- ro : {successfully-embedded==true }

deactivate ro
Expand Down
Loading