1@startuml
2participant d as "Director"
3participant r as "Read SD"
4participant w as "Write SD"
5group Initiate dir to read sd connection
6  d -> r : Hello
7  r -> d : CRAM-MD5 Challenge
8  d -> r : CRAM-MD5 Response
9  alt success
10    r -> d : 1000 OK auth
11  else failure
12    r -> d : 1999 Authorization failed.
13  end
14  d -> r : CRAM-MD5 Challenge
15  r -> d : CRAM-MD5 Response
16  alt success
17    d -> r : 1000 OK auth
18  else failure
19    d -> r : 1999 Authorization failed.
20  end
21end
22group Initiate dir to write sd connection
23  d -> w : Hello
24  w -> d : CRAM-MD5 Challenge
25  d -> w : CRAM-MD5 Response
26  alt success
27    w -> d : 1000 OK auth
28  else failure
29    w -> d : 1999 Authorization failed.
30  end
31  d -> w : CRAM-MD5 Challenge
32  w -> d : CRAM-MD5 Response
33  alt success
34    d -> w : 1000 OK auth
35  else failure
36    d -> w : 1999 Authorization failed.
37  end
38end
39
40loop each option
41  d -> r : pluginoptions %s
42  r -> d : 2000 OK plugin options
43end
44alt if reschedulung
45  d -> r : cancel Job=%s
46  r -> d : 3000 JobId=%ld Job="%s" marked to be %s.
47end
48d -> r : JobId=%s [...]
49r -> d : 3000 OK Job SDid=%d SDtime=%d Authorization=%100s
50d -> r : bootstrap
51d -> r : <bootstrap content>
52d -> r : BNET_EOD
53r -> d : 2000 OK bootstrap
54d -> r : getSecureEraseCmd
55r -> d : 2000 OK SDSecureEraseCmd %s
56loop each read_storage
57  d -> r : use storage=%s media_type=%s pool_name=%s pool_type=%s append=0 copy=%d stripe=%d
58  loop each device
59    d -> r : use device=%s
60  end
61  d -> r : BNET_EOD
62end
63d -> r : BNET_EOD
64r -> d : 3000 OK use device device=%s
65
66
67loop each option
68  d -> w : pluginoptions %s
69  w -> d : 2000 OK plugin options
70end
71alt if reschedulung
72  d -> w : cancel Job=%s
73  w -> d : 3000 JobId=%ld Job="%s" marked to be %s.
74end
75d -> w : JobId=%s [...]
76w -> d : 3000 OK Job SDid=%d SDtime=%d Authorization=%100s
77d -> w : getSecureEraseCmd
78w -> d : 2000 OK SDSecureEraseCmd %s
79loop each write_storage
80  d -> w : use storage=%s media_type=%s pool_name=%s pool_type=%s append=1 copy=%d stripe=%d
81  loop each device
82    d -> w : use device=%s
83  end
84  d -> w : BNET_EOD
85end
86d -> w : BNET_EOD
87w -> d : 3000 OK use device device=%s
88
89d -> r : setbandwidth=%d Job=%s
90r -> d : 2000 OK Bandwidth
91d -> w : listen
92== Message thread for Write SD communication spawned ==
93w -> d : Status Job=%s JobStatus=83
94note right
95  83 is numeric for 'S' which
96  means waiting for storage daemon
97end note
98d -> r : replicate JobId=%d Job=%s address=<write sd> port=%d ssl=%d Authorization=%s
99
100group Initiate read sd to write sd connection
101  r -> w : Hello Start Storage Job %s
102  w -> r : CRAM-MD5 Challenge
103  r -> w : CRAM-MD5 Response
104  alt success
105    w -> r : 1000 OK auth
106  else failure
107    w -> r : 1999 Authorization failed.
108  end
109  r -> w : CRAM-MD5 Challenge
110  w -> r : CRAM-MD5 Response
111  alt success
112    r -> w : 1000 OK auth
113  else failure
114    r -> w : 1999 Authorization failed.
115  end
116end
117r -> d : 3000 OK replicate
118
119w -> d : 3010 Job %s start
120w -> d : Status Job=%s JobStatus=82
121note right
122  82 is numeric for 'R' which
123  means running
124end note
125
126d -> r : run
127== Message thread for Read SD communication spawned ==
128r -> d : Status Job=%s JobStatus=82
129note right
130  82 is numeric for 'R' which
131  means running
132end note
133
134r -> w : start replicate
135w -> r : 3000 OK start replicate
136r -> w : replicate data %d
137w -> d : Status Job=%s JobStatus=82
138note right
139  82 is numeric for 'R' which
140  means running
141end note
142w -> r : 3000 OK data
143
144r -> w : DataRecords
145
146r -> w : BNET_EOD
147r -> w : BNET_EOD
148r -> w : end replicate
149w -> r : 3000 OK end replicate
150
151
152
153r -> d : Status Job=%s JobStatus=%d
154note right
155  send current job status
156end note
157loop each queued message
158  r -> d : Jmsg Job=%s type=%d level=%lld %s
159end
160r -> d : Status Job=%s JobStatus=84
161note right
162  84 is numeric for 'T' which
163  means terminated
164end note
165r -> d : 3099 Job %s end JobStatus=%d JobFiles=%d JobBytes=%s JobErrors=%u
166== Message thread for Read SD communication exits ==
167r -> d : BNET_EOD
168
169
170loop each queued message
171  w -> d : Jmsg Job=%s type=%d level=%lld %s
172end
173w -> d : Status Job=%s JobStatus=84
174note right
175  84 is numeric for 'T' which
176  means terminated
177end note
178w -> d : 3099 Job %s end JobStatus=%d JobFiles=%d JobBytes=%s JobErrors=%u
179== Message thread for Write SD communication exits ==
180w -> d : BNET_EOD
181@enduml
182