plan fuer das update
This commit is contained in:
parent
f963b61ebc
commit
077eb803a1
126
allgemein.txt
Normal file
126
allgemein.txt
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
0:
|
||||||
|
Zunaechst wir immer nachgesehen, ob das Repository bereits geklont wurde.
|
||||||
|
Wenn nein, dann wird geklont. Im Master-Branch befinden sich Dateinen, die
|
||||||
|
in allen anderen Branches gemeinsam genutzt werden. Das sollte wohl auf
|
||||||
|
jeden Fall fuer den DeviceController gelten.
|
||||||
|
1:
|
||||||
|
Anfrage bei ISMAS ob neue Daten da sind. Hier faengt die ganze Sache an.
|
||||||
|
Da man nicht weiss, on ISMAS ueberhaupt antworten wird braucht es einen
|
||||||
|
Timer. Man kann die Sache dann auch gleich mehrfach versuchen.
|
||||||
|
|
||||||
|
Die Anfrage geht also per Signal an den Apism-Client. Im Signal wird der
|
||||||
|
Zustand mitgegeben:
|
||||||
|
|
||||||
|
ISMAS_UPDATE_REQUEST_PENDING
|
||||||
|
|
||||||
|
und im Slot dann entsprechend uebernommen. Der Timer sollte nicht im Worker
|
||||||
|
stehen, sondern im Apism-Client. Der Worker sollte damit nicht belastet
|
||||||
|
sein. Der wird dann vom Apism-Client entsprechend benachrichtigt.
|
||||||
|
|
||||||
|
ISMAS_UPDATE_REQUEST_FAILURE
|
||||||
|
ISMAS_UPDATE_REQUEST_TIMEOUT
|
||||||
|
ISMAS_UPDATE_REQUEST_SUCCESS
|
||||||
|
|
||||||
|
Im 1./2.Fall wird dann ein Fehlerhandling durchgefuehrt. Insbesondere
|
||||||
|
wird Apism ueber den DB-Kanal darueber informiert (U0003). Am Ende wie
|
||||||
|
dann wie immer SendCmdVersion und beenden der Applikation.
|
||||||
|
|
||||||
|
Im Erfolgsfall muss in der Antwort der Branch enthalten sein, fuer den das
|
||||||
|
Update durchgefuhrt werden soll. Das ist auch bereits so (Location).
|
||||||
|
|
||||||
|
Ein Sonderfall waere der -m-Modus, da hier niemand auf der ISMAS-Seite
|
||||||
|
aktiv eingreift. Hier braucht es dann einen Ubergabeparameter an
|
||||||
|
ATBUpdateTool: --branch-name
|
||||||
|
|
||||||
|
Normalfall ist aber die Aktivierung via ISMAS. Dann muss der in der Antwort
|
||||||
|
enthaltene Branch zunaechst ausgecheckt werden.
|
||||||
|
2:
|
||||||
|
Dazu wird ein entsprechendes Signal an den GitClient gesandet.
|
||||||
|
|
||||||
|
GIT_CHECKOUT_BRANCH_REQUEST
|
||||||
|
|
||||||
|
Der GitClient sieht jetzt erstmal nach, ob es diesen Branch ueberhaupt
|
||||||
|
gibt.
|
||||||
|
|
||||||
|
Falls nein:
|
||||||
|
|
||||||
|
GIT_CHECKOUT_BRANCH_REQUEST_FAILURE
|
||||||
|
BRANCH_NOT_EXIST
|
||||||
|
|
||||||
|
Falls ja:
|
||||||
|
der GitClient versucht nun den Branch auszuchecken.
|
||||||
|
Geht das gut?
|
||||||
|
Falls nein:
|
||||||
|
|
||||||
|
GIT_CHECKOUT_BRANCH_REQUEST_FAILURE
|
||||||
|
BRANCH_CHECKOUT_ERROR
|
||||||
|
|
||||||
|
Falls ja:
|
||||||
|
GIT_CHECKOUT_BRANCH_REQUEST_SUCCESS
|
||||||
|
-> eventl. koennte man den Namen des Branches mitgeben
|
||||||
|
|
||||||
|
|
||||||
|
Signal an den Worker. Im entsprechenden Slot wird jetzt der eigentliche
|
||||||
|
UpdateProzess angeworfen.
|
||||||
|
3:
|
||||||
|
Mittels git fetch werden jetzt die Aenderungen ermittelt.
|
||||||
|
|
||||||
|
GIT_FETCH_UPDATES_REQUEST
|
||||||
|
|
||||||
|
GIT_FETCH_UPDATES_REQUEST_FAILURE
|
||||||
|
-> Worker informieren damit Fehlerbehandlung aktiviert wird
|
||||||
|
GIT_FETCH_UPDATES_REQUEST_SUCCESS
|
||||||
|
|
||||||
|
GIT_DIFF_UPDATES
|
||||||
|
|
||||||
|
Die Liste der geaenderten Dateien geht an den Worker. Der kann jetzt
|
||||||
|
noch Test machen, ob das Sinn macht. Evtl. eine Statusmeldung ausgeben
|
||||||
|
drueber was gleich passieren wird.
|
||||||
|
4:
|
||||||
|
Mittels git merge/pull werden nun die Dateien tatsaechlich im Branch
|
||||||
|
aktualisiert.
|
||||||
|
|
||||||
|
GIT_PULL_UPDATES_REQUEST
|
||||||
|
GIT_PULL_UPDATES_REQUEST_FAILURE
|
||||||
|
-> Worker informieren damit Fehlerbehandlung aktiviert wird
|
||||||
|
GIT_PULL_UPDATES_REQUEST_SUCCESS
|
||||||
|
-> Worker informieren
|
||||||
|
|
||||||
|
Sind die Daten vorhanden, dann werden sie mittels rsync ins Dateisystem
|
||||||
|
kopiert.
|
||||||
|
|
||||||
|
RSYNC_UPDATES
|
||||||
|
RSYNC_UPDATES_FAILURE
|
||||||
|
RSYNC_UPDATES_SUCCESS
|
||||||
|
|
||||||
|
Fuer jede kopierte Datei geht eine Nachricht raus ans ISMAS.
|
||||||
|
5:
|
||||||
|
Sind die Daten dann kopiert, so werden sie auf den DC kopiert (falls
|
||||||
|
notwendig): hier gehen dann wieder Nachrichten an ISMAS raus:
|
||||||
|
|
||||||
|
DC_UPDATE
|
||||||
|
DC_UPDATE_FAILURE
|
||||||
|
DC_UPDATE_SUCCESS
|
||||||
|
|
||||||
|
JSON_UPDATE
|
||||||
|
JSON_UPDATE_FAILURE
|
||||||
|
JSON_UPDATE_SUCCESS
|
||||||
|
|
||||||
|
Hier fuer jedes Json-File.
|
||||||
|
|
||||||
|
Schliesslich noch eine Zusammenfasung an ISMAS:
|
||||||
|
|
||||||
|
ISMAS_UPDATE_INFO_CONFIRM
|
||||||
|
ISMAS_UPDATE_INFO_CONFIRM_FAILURE
|
||||||
|
-> Worker informieren damit Fehlerbehandlung aktiviert wird
|
||||||
|
ISMAS_UPDATE_INFO_CONFIRM_SUCCESS
|
||||||
|
|
||||||
|
und schliesslich der abschliessende Status an ISMAS zurueckgemeldet:
|
||||||
|
|
||||||
|
ISMAS_CURRENT_PSA_STATUS_CONFIRM
|
||||||
|
ISMAS_CURRENT_PSA_STATUS_CONFIRM_FAILURE
|
||||||
|
ISMAS_CURRENT_PSA_STATUS_CONFIRM_SUCCESS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user