{{vertopal_0110219078394aabb58ccd49f460d746/media/image1.png?552x193}} IPA-Bericht Switch Monitoring Dietikon,\\ 27. April bis 12. Mai 2023 Autor: Silas Kägi Hauptexpert: Carlo Pirola\\ Nebenexpert: Daniel Zuck\\ Berufsbildner: Rudolf Wegelin\\ Verantwortliche Fachkraft: Stefan Kuhn ====== Inhaltsverzeichnis ====== [[#umfeld-und-ablauf|1 Umfeld und Ablauf [[#umfeld-und-ablauf|5]]]] [[#ausganslage|1.1 Ausganslage [[#ausganslage|5]]]] [[#detaillierte-aufgabenstellung|1.2 Detaillierte Aufgabenstellung [[#detaillierte-aufgabenstellung|5]]]] [[#projektorganistation|1.3 Projektorganistation [[#projektorganistation|9]]]] [[#mittel-und-methoden|1.4 Mittel und Methoden [[#mittel-und-methoden|9]]]] [[#vorkenntnisse|1.5 Vorkenntnisse [[#vorkenntnisse|10]]]] [[#vorarbeiten|1.6 Vorarbeiten [[#vorarbeiten|10]]]] [[#projektmanagment-methode|1.7 Projektmanagment Methode [[#projektmanagment-methode|11]]]] [[#_Toc134744120|1.8 Firmenstandards [[#_Toc134744120|11]]]] [[#dokumentenablage|1.9 Dokumentenablage [[#dokumentenablage|11]]]] [[#zeitplan|1.10 Zeitplan [[#zeitplan|12]]]] [[#arbeitsjournale|1.11 Arbeitsjournale [[#arbeitsjournale|13]]]] [[#arbeitsjournal-27.04.2023|1.11.1 Arbeitsjournal 27.04.2023 [[#arbeitsjournal-27.04.2023|13]]]] [[#arbeitsjournal-28.04.2023|1.11.2 Arbeitsjournal 28.04.2023 [[#arbeitsjournal-28.04.2023|15]]]] [[#arbeitsjournal-02.05.2023|1.11.3 Arbeitsjournal 02.05.2023 [[#arbeitsjournal-02.05.2023|17]]]] [[#arbeitsjournal-03.05.2023|1.11.4 Arbeitsjournal 03.05.2023 [[#arbeitsjournal-03.05.2023|19]]]] [[#arbeitsjournal-04.05.2023|1.11.5 Arbeitsjournal 04.05.2023 [[#arbeitsjournal-04.05.2023|21]]]] [[#arbeitsjournal-05.05.2023|1.11.6 Arbeitsjournal 05.05.2023 [[#arbeitsjournal-05.05.2023|23]]]] [[#arbeitsjournal-09.05.2023|1.11.7 Arbeitsjournal 09.05.2023 [[#arbeitsjournal-09.05.2023|24]]]] [[#arbeitsjournal-10.05.2023|1.11.8 Arbeitsjournal 10.05.2023 [[#arbeitsjournal-10.05.2023|25]]]] [[#arbeitsjournal-11.05.2023|1.11.9 Arbeitsjournal 11.05.2023 [[#arbeitsjournal-11.05.2023|26]]]] [[#arbeitsjournal-12.05.2023|1.11.10 Arbeitsjournal 12.05.2023 [[#arbeitsjournal-12.05.2023|27]]]] [[#projekt-dokumentation|2 Projekt Dokumentation [[#projekt-dokumentation|28]]]] [[#kurzfassung|2.1 Kurzfassung [[#kurzfassung|28]]]] [[#ausgangssituation|2.1.1 Ausgangssituation [[#ausgangssituation|28]]]] [[#umsetzung|2.1.2 Umsetzung [[#umsetzung|28]]]] [[#ergebnis|2.1.3 Ergebnis [[#ergebnis|28]]]] [[#informieren|2.2 Informieren [[#informieren|29]]]] [[#switch-befehle|2.2.1 Switch Befehle [[#switch-befehle|29]]]] [[#rückfragen|2.2.2 Rückfragen [[#rückfragen|30]]]] [[#planen|2.3 Planen [[#planen|31]]]] [[#use-case|2.3.1 Use Case [[#use-case|31]]]] [[#systemgrenze|2.3.2 Systemgrenze [[#systemgrenze|32]]]] [[#komponentendiagramm|2.3.3 Komponentendiagramm [[#komponentendiagramm|32]]]] [[#aktivitätsdiagramme|2.3.4 Aktivitätsdiagramme [[#aktivitätsdiagramme|34]]]] [[#sequenzdiagramme|2.3.5 Sequenzdiagramme [[#sequenzdiagramme|37]]]] [[#wireframe-admin-panel|2.3.6 Wireframe Admin Panel [[#wireframe-admin-panel|38]]]] [[#testkonzept|2.3.7 Testkonzept [[#testkonzept|39]]]] [[#entscheiden|2.4 Entscheiden [[#entscheiden|43]]]] [[#framework|2.4.1 Framework [[#framework|43]]]] [[#software|2.4.2 Software [[#software|43]]]] [[#realisieren|2.5 Realisieren [[#realisieren|43]]]] [[#konfigurationsdateien|2.5.1 Konfigurationsdateien [[#konfigurationsdateien|43]]]] [[#regex|2.5.2 Regex [[#regex|43]]]] [[#apis|2.5.3 APIs [[#apis|43]]]] [[#switch-infos-abfragen|2.5.4 Switch Infos abfragen [[#switch-infos-abfragen|44]]]] [[#switch-response-parsen|2.5.5 Switch Response parsen [[#switch-response-parsen|44]]]] [[#start-skript-funktion|2.5.6 Start Skript Funktion [[#start-skript-funktion|46]]]] [[#history-funktion|2.5.7 History Funktion [[#history-funktion|46]]]] [[#fremder-code|2.5.8 Fremder Code [[#fremder-code|46]]]] [[#kontrollieren|2.6 Kontrollieren [[#kontrollieren|47]]]] [[#test-der-bedienungsanleitung|2.6.1 Test Benutzerhandbuch [[#test-der-bedienungsanleitung|47]]]] [[#testprotokolle-manual-testing|2.6.2 Testprotokolle manuel testing [[#testprotokolle-manual-testing|47]]]] [[#auswerten|2.7 Auswerten [[#auswerten|51]]]] [[#weiterentwicklungsmöglichkeiten|2.7.1 Weiterentwicklungsmöglichkeiten [[#weiterentwicklungsmöglichkeiten|51]]]] [[#reflexion|2.7.2 Reflexion [[#reflexion|52]]]] [[#schlusswort|2.7.3 Schlusswort [[#schlusswort|52]]]] [[#anhang|3 Anhang [[#anhang|53]]]] [[#versionierung-git-log|3.1 Versionierung Git Log [[#versionierung-git-log|53]]]] [[#glossar|4 Glossar [[#glossar|53]]]] [[#_Toc134744172|5 Literaturverzeichnis [[#_Toc134744172|53]]]] [[#abbildungsverzeichnis|6 Abbildungsverzeichnis [[#abbildungsverzeichnis|53]]]] [[#tabellenverzeichnis|7 Tabellenverzeichnis [[#tabellenverzeichnis|54]]]] [[#codeverzeichnis|8 Codeverzeichnis [[#codeverzeichnis|55]]]] ====== Umfeld und Ablauf ====== ===== Ausganslage ===== In der Rafisa Informatik GmbH werden zurzeit 90 Lernende der Fachrichtungen Applikationsentwicklung, ICT-Fachmann/Fachfrau, Systemtechnik und Betriebsinformatik sowie Plattformentwicklung zu InformatikerInnen EFZ ausgebildet. Neben dem regulären Ausbildungsbetrieb bietet die Rafisa auch Eignungsabklärungen, Arbeitstrainings, Vorbereitungen für eine Informatik-Ausbildung sowie Bewerbungs- und Job-Coachings an. Als zentrale Dokumentationsplattform dient der internen Systemtechnik das auf DokuWiki basierende Rafisa-Wiki. In diesem Wiki werden sämtliche technischen und organisatorischen Aspekte der Rafisa-Infrastruktur festgehalten. Eine der grössten Herausforderungen für die Systemtechnik besteht im übersichtlichen Dokumentierender vielen und sich stetig verändernden VLAN-Zuordnungen auf den Netzwerkgeräten. Bisher wurden die Switches über manuelle CMD Befehle ausgelesen und im DokuWiki Switch-Panel Syntax festgehalten. In der vorliegenden Arbeit soll dieser Prozess mittels einer Applikation automatisiert werden. Das Ziel besteht darin, wichtige Parameter der VLAN-Belegung von den entsprechenden Netzwerkgeräten abzurufen und auf DokuWiki-Seiten übersichtlich darzustellen. ===== Detaillierte Aufgabenstellung ===== Ziel des zu realisierenden Systems “Switch Panel” ist ein Plugin für die Wiki-Plattform DokuWiki. Mithilfe dieses Plugins lassen sich auf einer Wiki-Seite Diagramme von Netzwerk-Switches erstellen und diese mit Informationen zum Switch versehen. Das Ziel dieser Arbeit besteht in der Entwicklung einer Applikation, mit welcher automatisch Switch-Diagramme aller fünf Rafisa-Standorte erstellt, mit direkt von den Geräten abgerufenen technischen Informationen versehen und auf Wiki-Seiten übersichtlich dargestellt werden können(Info-Page). Die benötigten Konfigurations-Parameter soll die Applikation von entsprechend formatierten Wiki-Seiten abrufen (Config-Page). Die Software soll über ein Admin-Portal gestartet werden können (Admin-Page). Auf diesem Portal soll zusätzlich die Möglichkeit bestehen, eine History der an den Switches vorgenommenen Änderungen abzurufen. Anforderungen Backend: Das Backend soll mit Python erstellt werden. Das Backend soll die Arbeit die bisher von Plattformentwicklern manuell erledigt wurde automatisieren. Dazu gehören: * Abfragen der Switches * Aufbereitung und Zuordnung der Informationen * Eintrag der Informationen in Dokuwiki Um die Erweiterbarkeit des Systems sicherzustellen sollen alle Prozesse als Funktionen abgebildet werden. Parameter die nicht von der «Config-Page» ausgelesen werden sollen am Anfang der Datei die die Funktion beinhaltet deklariert werden. Frontend: Das Frontend soll in die Dokuwiki plattform der Rafisa eingebettet werden. Gefordert sind die folgenden Seiten: Info-Page Auf der Info-Page oder den Info-Pages sollen Diagramme aller produktiven Switches der fünf Rafisa-Standorte übersichtlich dargestellt werden. Usability, Ästhetik und Design sollen sich an der bestehenden DokuWiki-Plattform orientieren. Die Switch-Diagramme sollen mit folgenden direkt von den Switches abgerufenen technischen Informationen versehen werden: * Firmware Version * VLAN-Belegung der Ports (PVID, Trunk, farbliche Markierung gemäss Firmenstandards) * Fehlerhaft konfigurierte Ports (z.B. Mehrfachbelegung bei Accessports, fehlende VLAN bei Trunks) * MAC-Adressen der an einen Port angeschlossenen Geräte Config-Page Die wichtigsten Parameter der Applikation sollen von einer entsprechend formatierten Wiki-Seite abgerufen werden. Über diese Seite soll die Plattformentwicklung festlegen können was auf welche Art dargestellt wird. Diese Seite ist so zu gestalten, dass mit DokuWiki vertraute AnwenderInnen die Eingaben in gewohnter Weise vornehmen können. Der Config-Page sollen folgende Informationen entnommen werden können: * PVID und Name der darzustellenden VLAN * Farbcodes der darzustellenden VLAN * IP-Adressen der darzustellenden Switches Admin-Page Die Admin-Page soll einen Knopf zum Updaten der Switch-Darstellungen enthalten. Zusätzlich soll über das Portal eine Veränderungs-History abrufbar sein. Es sollen Felder für die Eingabe von Von-Bis-Daten (Datumsfeld) und Switch-Namen (Dropdown-Feld) vorhanden sein. Auf Grundlage der Eingaben müssen Veränderungen in folgenden Parametern ersichtlich werden: * Firmware-Version * VLAN-Belegung der Ports Weiter sollen der Log der letzten Skriptausführung auf der Admin-Page einsehbar sein. Durch diesen Log soll einsehbar sein ob die letzte Ausführung erfolgreich war. Ist dies nicht der Fall, so soll eine Aussagekräftige Fehlermeldung angezeigt werden. Dokumentation Für die Wartbarkeit der Anwendung sollen folgende Diagramme nach UML 2.0 erstellt werden: * Use-Case * Activity-Diagramm Ist bei einem Prozess der Nachrichtenfluss besonders relevant, so soll statt einem Activity-Diagramm ein Sequenzdiagramm benutzt werden. Explizit gefordert ist dies beim generieren der History für die Admin-Page. Für die Plattformentwicklung soll zudem ein Benutzerhandbuch erstellt werden. Aus diesem soll die korrekte Verwendung der Config- und die Admin-Page entnommen werden können. Die folgenden Themen sollen im Benutzerhandbuch abgehandelt werden: Config pages * Navigation zur standortspezifischen Config-Page * Konfigurierung der folgenden Tabellen in der Config-Page: * PVID und Name der darzustellenden VLAN * Farbcodes der darzustellenden VLAN * IP-Adressen der darzustellenden Switches Admin Panel * Manuelles starten der Diagrammgenerierung * History einsehen * Log einsehen Allgemeines * Cron-Job * Einrichten von neuen Standorten * Verhalten bei Fehlermeldungen ===== Projektorganistation ===== {{vertopal_0110219078394aabb58ccd49f460d746/media/image2.jpg?572x345|Ein Bild, das Diagramm enthält. Automatisch generierte Beschreibung}} Abbildung 1 Organisationsdiagramm ===== Mittel und Methoden ===== Zur Verfügung gestellte Systeme Für die Entwicklung der Applikation stehen folgende Systeme zur Verfügung: Hostname: mos-zh-01.rafisa.org\\ OS: Ubuntu 20.04 LTS\\ IP-Adresse: 172.16.1.160\\ Zugang: SSH Hostname: gitlab.rafisa.net\\ OS: Ubuntu 22.04 LTS\\ IP-Adresse: 144.76.17.227\\ Zugang: SSH / HTTPS Für die Config- und Info-Pages steht eine fertig eingerichtete Doku-Wiki-Plattform zur Verfügung (Vorarbeit): Hostname: wikidev.rafisa.net\\ OS: Ubuntu 20.04 LTS\\ IP-Adresse: 138.201.126.13\\ Zugang: SSH / HTTPS Die folgenden Technologien werden während der Arbeit verwendet: Flask, Jetbrains Gateway (Pycharm), HTML & CSS, Python, Bash, Cron Zum Erstellen der Diagramme wird das Switchpanel Plugin von Dokuwiki verwendet: https:%%//%%www.dokuwiki.org/plugin:switchpanel ===== Vorkenntnisse ===== Der Kandidat hat sich seit Dezember mit Dokuwiki, den Interfaces der Switches und den VLANs der Rafisa auseinandergesetzt. Python ist bekannt aus Schulprojekten sowie einer kürzeren Arbeit innerhalb des Betriebs. ===== Vorarbeiten ===== * eine Funktion, welche aus Parametern ein Diagramm für Dokuwiki erstellt wurde bereits erstellt. * Für die Zugriffe auf die Dokuwiki-Plattform und die Switches existiert ein Prototyp, der vom Kandidaten seit Dezember refactored wurde. ===== Projektmanagment Methode ===== Für die vorliegende IPA wurde die IPERKA Methode als Projektmanagement Methode ausgewählt. Die Einfachheit der Struktur dieser Methode eignet sich perfekt für die Länge der Arbeit und ermöglicht eine klare Dokumentation in separaten Kapiteln. ===== Dokumentenablage ===== Zur Versionierung wird das Firmeninterne Git (GitLab) der Rafisa Informatik GmbH verwendet. Es wird täglich mindestens ein Commit gemacht und die Erledigten Aufträge des Tages werden im Kommentar dazu aufgelistet. ===== Zeitplan ===== {{vertopal_0110219078394aabb58ccd49f460d746/media/image3.emf?951x426}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image4.emf?930x45}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image5.emf?930x334}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image4.emf?930x45}} {{vertopal_0110219078394aabb58ccd49f460d746/media/image6.emf?930x320}} ===== Arbeitsjournale ===== ==== Arbeitsjournal 27.04.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Aufgabenstellung analysieren (0.5h / 0.5h)\\ * Zusatzinformationen holen (0.5h / 0.5h)\\ * Switch Befehle suchen und dokumentieren (0.5h / 0.5h)\\ * Dokumentation erstellen (0.5h / 0.5h)\\ * Zeitplan erstellen (1h / 1h)\\ * Use Case Diagramm erstellen (0.5h / 0.5h)\\ * Systemgrenzen (0.5h / 0.5h)\\ * Komponentendiagramm erstellen (1.5h / 1.5h)\\ * Mit Aktivitätsdiagramm beginnen (2.5h / 2.5h)| |**Ungeplante Arbeiten** | |Keine | |Erfolge | |Ich konnte meine Tagesziele erreichen.\\ Die Aufgabenstellung sagt mir zu und ich habe begonnen im Kopf ein Konzept zurecht zu legen. | |Misserfolge / Probleme | |* Schultag vom 08. Mai ging in der Planung vergessen, Experte kontaktiert\\ * Aktivitätsdiagramm wird zu unübersichtlich und ich muss es aufteilen\\ * Leider habe ich nur eine ältere Version der Bedienungsanleitung für Firmware bis Version 4.30,- die Switches haben aber mehrheitlich Version 4.50. | |Beanspruchte Hilfestellungen | |Ich habe mein Verständnis bezüglich der VLAN Trunks von Herrn Rüefli bestätigen lassen, da ich ein kurzes Blackout hatte. | |Vergleich mit Zeitplan | |Bis jetzt gut in der Zeit, ich hoffe ich kann mich an das geplante halten. | |**Überzeit** | |Keine | |Reflexion | |Bezüglich der veralteten Bedienungsanleitung hätte ich vielleicht auf den Verantwortlichen für die Netzwerksysteme in unserem Betrieb zugehen oder mich mit dem Herstellen in Verbindung setzen müssen. | Tabelle 1 Arbeitsjournal 27.04.2023 ==== Arbeitsjournal 28.04.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Aktivitätsdiagramm abschliessen (0.75h / 1.75h)\\ * Sequenzdiagramm gemäss Aufgabenstellung für History Funktion (1h / 1h)\\ * Sequenzdiagramm für Switch Verbindung (0.25h)\\ * Wireframe für das Admin Panel erstellen (0.25h / 0.25h)\\ * Testkonzept erstellen (3.5h / 3.25h)\\ * Expertengespräch (2h / 1h)\\ * Framework Entscheidung (0.5h / 0.5h) | |**Ungeplante Arbeiten** | |* Aktivitätsdiagramm aufteilen | |Erfolge | |* Während dem Verkleinern vom Aktivitätsdiagramm kam mir die Idee, von der Verbindung zwischen dem Generator und den Switches ein Sequenzdiagramm zu erstellen, um diese genauer aufzuzeigen. | |Misserfolge / Probleme | |* Unsicher wie ich es protokolieren soll, dass ich neben dem Expertengespräch vergessen habe einen weiteren Auftrag einzutragen, werde mich aber beim Gespräch heute Nachmittag erkundigen. | |Beanspruchte Hilfestellungen | |* Ich habe gestern bei der Erstellung des Komponentendiagramms mithilfe einer Internetquelle mich über dessen Aufbau informiert und vergessen diese anzugeben.(((visual-paradigm.com, o. D.))) Aufgrund dessen habe ich mich bei einem Mitlernenden (Mailo) darüber erkundigt, ob ich diese beim gestrigen Tag nachtragen oder in das heutige Journal schreiben sollte. | |Vergleich mit Zeitplan | |* Das Aufteilen des Aktivitätsdiagramm nahm mehr Zeit in Anspruch als gedacht. Ich hatte bei der Planung 45 Minuten für den Abschluss geplant, durch das ungeplante Aufteilen brauchte ich aber eine Stunde länger.\\ * Dadurch konnte ich zwar noch rechtzeitig mit dem Sequenzdiagramm beginnen, es aber nicht bis zum geplanten Zeitpunkt fertigstellen. Dadurch ist auch das Wireframe um einen Block verspätet. Trotzdem konnte ich noch mit dem Testkonzept beginnen aber bei weitem nicht die geplanten Zwei Stunden daran arbeiten.\\ * Mir ist bei der Planung den Fehler unterlaufen, für das Expertengespräch 2 Stunden einzuplanen, dadurch habe ich dort noch Zeit, um mit dem Testkonzept aufzuholen| |**Überzeit** | |30 Minuten Überzeit, um die vom Experten vorgeschlagenen Änderungen an der Dokumentation vorzunehmen (Aufbau Arbeitsjournal) | |Reflexion | |Rückblicken war es ungeschickt, das Aktivitätsdiagramm erst in einem zweiten Teil aufzuteilen. Ich hätte vermutlich direkt anfangen müssen es aufzuteilen, als ich merkte das es zu viel wird.\\ Mir ist aufgefallen, dass ich unterbewusst mit den Diagrammen zwischen Deutsch und Englisch gewechselt habe, was in der Dokumentation nicht sehr schön ist. Für ein zukünftiges Projekt muss ich mir im Vorhinein ein Konzept dafür überlegen, z. B. alles Informatik-bezogene auf Englisch und der Rest auf Deutsch, oder alles in einer Sprache. | Tabelle 2 Arbeitsjournal 28.04.2023 ==== Arbeitsjournal 02.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Switch API (3h / 2h)\\ * VLAN API (3h / 2h)\\ * Switch Infos abfragen (2h / 2h) | |**Ungeplante Arbeiten** | |* Flask installieren (2h) | |Erfolge | |Ich konnte beide Projekte in einem Repo initialisieren (durch symlink) und ein lesbares Gerüst erstellen | |Misserfolge / Probleme | |* Dotenv wollte nicht geladen werden absoluten Pfad verwenden\\ * Konnte repo auf linux nicht pushen da nutzer root chown devmon nutzer | |Beanspruchte Hilfestellungen | |Need refactoring: x\\ \\ * https://medium.com/@quincyhsieh/how-to-configure-python3-flask-with-apache-mod-wsgi-production-mode-on-ubuntu-b5b3b36c2d45\\ * https://flask.palletsprojects.com/en/2.3.x/tutorial/layout/\\ * https://linuxize.com/post/how-to-create-symbolic-links-in-linux-using-the-ln-command/\\ * https://superuser.com/questions/244245/how-do-i-get-apache-to-follow-symlinks\\ * https://pypi.org/project/python-dotenv/\\ * https://stackoverflow.com/questions/64734118/environment-variable-not-loading-with-load-dotenv-in-linux\\ * [[https://www.toptal.com/developers/gitignore|__https:%%//%%www.toptal.com/developers/gitignore__]]| |Vergleich mit Zeitplan | |Abgesehen von Problem siehe Reflexion, gut in der Zeit und ich konnte alle geplanten Aufträge erledigen | |**Überzeit** | |Keine | |Reflexion | |Mir war bei der Erstellung des Zeitplanes bewusst, dass ich Flask installieren muss und habe mir auch bei den beiden API arbeiten auch Zeit dafür eingeplant, jedoch kein eigener Task dafür eingetragen. Das war schlecht, da es nicht transparent meine Tätigkeiten aufzeigt und auch nicht übersichtlich ist. Ich habe deshalb im Zeitplan eine neue Zeile mit dem Auftrag «Flask installieren» erstellt und 2 Stunden als überzogenes Zeitbudget eingetragen, obwohl ich diese bereits in den beiden Aufträgen mit einberechnet habe. Dadurch dauerten diese auch nur 2 Stunden statt den geplanten 3 (für jeden Auftrag 1h für Flask geplant). | Tabelle 3 Arbeitsjournal 02.05.2023 ==== Arbeitsjournal 03.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Switch responses parsen (4h / 4h)\\ * Switchpanel Plugin Text erstellen (2h / 2h)\\ * Plugin Text auf Wiki hochladen (1h / 2h)\\ * Admin Panel Frontend erstellen (1h / -) | |**Ungeplante Arbeiten** | |Keine | |Erfolge | |* Möglichen Aufbau der geparsten JSON-Ausgabe überlegt\\ * Diagrammgenerierung soweit fertig | |Misserfolge / Probleme | |* Regex für «show version» funktionierte bei allen Switches ausser bei einem, anschliessend habe ich mir den Response von diesem angeschaut und gesehen, dass bei diesem im Output zwischen «version : V4.0» kein Leerschlag ist sondern «version: V4.0» ein \s* eingefügt\\ * JSON File Output ist nicht formatiert, nach google recherche json.dump(file, indent=4) | |Beanspruchte Hilfestellungen | |Need refactoring: x\\ \\ * https://regex101.com\\ * https://stackoverflow.com/questions/37398301/json-dumps-format-python\\ * https://www.dokuwiki.org/plugin:switchpanel\\ * https://www.dokuwiki.org/de:wiki:syntax#absaetze\\ * https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior\\ * [[https://www.w3schools.com/python/gloss_python_escape_characters.asp|__https:%%//%%www.w3schools.com/python/gloss_python_escape_characters.asp__]]\\ * Für Absatz in DokuWiki «\\ », in Python bedeutet «\\» «\» ich musste die Backslashes escapen im code: «\\\\ », im DokuWiki: «\\ »\\ * [[https://www.w3schools.com/python/ref_string_join.asp|__https:%%//%%www.w3schools.com/python/ref_string_join.asp__]]\\ * newline when putting strings together\\ * https://www.tutorialspoint.com/python-program-to-split-the-even-and-odd-elements-into-two-different-lists\\ * | |Vergleich mit Zeitplan | |* Änderung am Zeitplan bezüglich Benutzeranleitung, Experten mitgeteilt\\ * Frontend für Admin Panel konnte ich noch nicht beginnen und erledigen, da das Implementieren des Hochladens 1 Stunde länger gedauert hat wie angenommen | |**Überzeit** | |30 Minuten Überzeit, Git Problem (siehe Reflexion) | |Reflexion | |Ich habe dummerweise meinen Code gepusht, ohne vorher zu pullen. Als die IDE dies automatisch versuchte gab es ein Konflikt, da der Linux Benutzer (devmon) nicht über die Berechtigung über das gesamte Repo verfügte, sondern nur auf die Projektordner. Da ich gestern aber meine Dokumentation erst nach dem Code gepusht hatte, konnte die IDE meine Änderungen nicht pullen. Das Problem konnte ich lösen, in dem ich dem Linux Benutzer für das gesamte Repo Berechtigung gab (chown). Daraus lerne ich, dass ich nie mehr mehrere Projekte in einem Repo haben werde und in Zukunft unbedingt an das pullen vor dem pushen denken muss. | Tabelle 4 Arbeitsjournal 03.05.2023 ==== Arbeitsjournal 04.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Start Script Funktion (0.5h / 1h)\\ * Log Funktion (1h / 1h)\\ * History Funktion (3h / 5h) | |**Ungeplante Arbeiten** | |* Frontend Admin Panel (1h / 1h) | |Erfolge | |Coding Arbeiten abgeschlossen, morgen testen | |Misserfolge / Probleme | |* Das Script per Admin Panel zu starten war aufwändiger als gedacht, denn das geeigneten Python Modul, um Konsolenbefehle auszuführen, unterstützt das Wechseln der virtuellen Umgebung nicht. Diese brauche ich aber für meine Module etc. Ich konnte während meiner Internetrecherche herausfinden, dass der Wechsel mit einem Bash File möglich wäre. So bin ich auf die Lösung gekommen, ein Start-File zu erstellen und in Python nur dieses aufzurufen.\\ * Ich habe den Aufwand für die History Funktion unterschätzt, denn ich muss durch die HTML Dateien iterieren um die SVGs zu finden. Da dies nicht funktionierte und es nicht herausfinden konnte, habe ich 2 Beispieldiagramme vom Wiki manuell kopiert und im Code verwendet um trotzdem weiter programmieren zu können.| |Beanspruchte Hilfestellungen | |* https://flask.palletsprojects.com/en/2.3.x/templating/\\ * https://www.w3schools.com/tags/tag_select.asp\\ * https://stackoverflow.com/questions/33580143/flask-show-flash-messages-in-alertbox\\ * [[https://stackoverflow.com/questions/34902378/where-do-i-get-secret-key-for-flask|__https:%%//%%stackoverflow.com/questions/34902378/where-do-i-get-secret-key-for-flask__]]\\ * https://realpython.com/python-subprocess/\\ * https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior\\ * https://regex101.com | |Vergleich mit Zeitplan | |Ich hatte heute mit mehreren Baustellen zu kämpfen, zum einen kam das Admin Panel von gestern als Arbeit dazu und zudem dauerte sowohl die Startfunktion wie auch die History länger als gedacht. Ich konnte aber alle Programmieraufträge so weit abschliessen, wodurch aber die Dokumentation auf der Strecke blieb. Aber ich habe mir immer Notizen gemacht | |**Überzeit** | |30 Minuten Überzeit um Arbeitsjournal zu schreiben | |Reflexion | |Rückblickend habe ich zu lange am Problem mit der SVG Extraktion gesessen bis ich auf die Idee der manuellen Umsetzung gekommen bin | Tabelle 5 Arbeitsjournal 04.05.2023 ==== Arbeitsjournal 05.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Manuelle Tests (5h / 5h) | |**Ungeplante Arbeiten** | |* Problem HTML SVG extrahieren mit VF angeschaut (2h) | |Erfolge | |* Testing erfolgreich abgeschlossen\\ * Stackoverflow Frage wegen Problem mit SVG gestellt | |Misserfolge / Probleme | |Keine | |Beanspruchte Hilfestellungen | |Mit VF nach Fehlerquelle beim Extrahieren von SVG gesucht | |Vergleich mit Zeitplan | |Ich bin wieder gut im Zeitplan, habe jedoch durch das Analysieren des Problems mit Stefan erneut die Dokumentation vernachlässigt | |**Überzeit** | |Keine | |Reflexion | |Ich bin ein wenig beruhigt das es sich beim Fehler nicht um etwas kleines oder Vermeidbares handelt, bin aber trotzdem über ihn genervt und hoffe von Stackoverflow eine Antwort zu bekommen| Tabelle 6 Arbeitsjournal 05.05.2023 ==== Arbeitsjournal 09.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Dokumentation (5h / 5h) | |**Ungeplante Arbeiten** | |Keine | |Erfolge | |Ich konnte das Script von Switchpanel, welches für das Hower-Popup verwendet wird auf der History einbetten | |Misserfolge / Probleme | |Die vorgeschlagene Lösung auf Stackoverflow mit BeautifulSoup war leider nicht erfolgreich, da der gesamte HTML Code nun \\ durchsäht ist und mit re.sub oder string.replace nicht entfernt werden kann | |Beanspruchte Hilfestellungen | |* https://www.netsolutions.com/insights/flask-vs-django/\\ * https://stackoverflow.com/questions/3945750/find-a-specific-tag-with-beautifulsoup\\ * https://stackoverflow.com/questions/62641616/escape-problem-with-beautifulsoup-in-python\\ * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#output-formatters\\ * https://github.com/GreenItSolutions/dokuwiki-plugin-switchpanel/blob/master/script.js| |Vergleich mit Zeitplan | |Leider nicht so weit gekommen in der Dokumentation wie gedacht | |**Überzeit** | |30 Minuten Überzeit, um zu versuchen den Stackoverflow Vorschlag umzusetzen ohne Erfolg | |Reflexion | |Ich bin von meiner heutigen Leistung enttäuscht. Zudem merkte ich, dass ich ein wenig ratlos bin, was ich in das Realisieren Kapitel schreiben sollte. | Tabelle 7 Arbeitsjournal 09.05.2023 ==== Arbeitsjournal 10.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Benutzeranleitung (7h / 7h)\\ * Expertenbesuch (1h / 1h) | |**Ungeplante Arbeiten** | |Keine | |Erfolge | |2. Expertenbesuch und gut vorangekommen beim Benutzerhandbuch | |Misserfolge / Probleme | |Keine | |Beanspruchte Hilfestellungen | |* https://www.ionos.de/digitalguide/hosting/hosting-technik/cronjob/ | |Vergleich mit Zeitplan | |Ich bin gut in der Zeit, Morgen früh den Finalschliff an der Bedienungsanleitung machen und anschliessend an der Dokumentation arbeiten| |**Überzeit** | |30 Minuten Überzeit, um an der Benutzeranleitung zu arbeiten | |Reflexion | |Mithilfe des Expertengespräches konnte ich mir gute Gedankengänge machen, unter anderem nicht zu beschreiben Was sondern Weshalb. | Tabelle 8 Arbeitsjournal 10.05.2023 ==== Arbeitsjournal 11.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Benutzeranleitung abschliessen (1h / 2h)\\ * Dokumentieren (3h / 5h)\\ * Weiterentwicklungsmöglichkeiten (1h / 1h) | |**Ungeplante Arbeiten** | |Ich habe beim testen lassen der Bedienungsanleitung zwar mit Verbesserungsvorschlägen gerechnet, aber zu wenig Zeit eingeplant, um auch noch Verbesserungen am Admin Panel vorzunehmen. | |Erfolge | |Dank des Feedbacks eines Systemtechnikers konnte ich die Bedienungsanleitung überprüfen lassen und das mit Erfolg, jedoch hat er noch ein Fehler im Admin Panel entdeckt, diesen habe ich behoben. | |Misserfolge / Probleme | |Keine nennenswerten Probleme | |Beanspruchte Hilfestellungen | |Testing der Bedienungsanleitung / Software durch Mitlehrling Systemtechnik (Fabio) und Rückmeldung erhalten | |Vergleich mit Zeitplan | |Ich konnte gute Struktur im Realisationsteil bringen, es wird jedoch eng werden alle Gedanken niederschrieben zu können, durch Umsetzung der Verbesserungsvorschläge hat die Benutzeranleitung länger gebraucht | |**Überzeit** | |30 Minuten Überzeit, um Tagesjournal zu schreiben | |Tagesreflexion | |Ich habe festgestellt, dass ich effizienter dokumentieren kann, wenn ich meine Gedanken zu Beginn in Stichworten aufliste und sie dann in einem weiteren Schritt ausführlich beschreibe, anstatt sie von Anfang an detailliert zu erfassen und dabei Gefahr zu laufen, wichtige Gedanken zu vergessen. Meine Kräfte schwinden zunehmend, möchte aber morgen am letzten Tag nochmals alles geben.| Tabelle 9 Arbeitsjournal 11.05.2023 ==== Arbeitsjournal 12.05.2023 ==== ^Tägliche Arbeiten (SOLL / IST) ^ |* Dokumentieren (8h / 7h) | |**Ungeplante Arbeiten** | |* Reflexion (2h / 1h) | |Erfolge | |Dokumentation so weit wie zeitlich möglich abgeschlossen| |Misserfolge / Probleme | | | |Beanspruchte Hilfestellungen | | | |Vergleich mit Zeitplan | | | |**Überzeit** | | | |Reflexion | | | Tabelle 10 Arbeitsjournal 12.05.2023 ====== Projekt Dokumentation ====== ===== Kurzfassung ===== ==== Ausgangssituation ==== Um eine Übersicht der Konfiguration aller Switches in der Rafisa zu haben, verbindet sich ein Lehrling der Systemtechnik manuell zu den einzelnen Switches, fragt deren Konfiguration ab und trägt diese mittels Switchpanel Plugin in das DokuWiki der Rafisa ein, um ein Diagramm zu erstellen. ==== Umsetzung ==== Es wurde ein System zur automatisierten Dokumentation von Switch-Konfigurationen erstellt. Dies wurde mit Python programmiert. Zur Übertragung von Parametern zwischen den Teilsystemen wurde eine API erstellt, mit der der Diagrammgenerator Konfigurationen von verschiedenen Seiten des DokuWikis abfragen kann. Die Auswertung der Daten erfolgt durch Regex. Mit HTML und CSS wurde ein Adminpanel eingerichtet. Um die API und die Webkomponenten nach aussen Zugänglich zu machen wurde Flask verwendet. ==== Ergebnis ====