{"id":6687,"date":"2020-04-03T12:44:43","date_gmt":"2020-04-03T10:44:43","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=6687"},"modified":"2020-04-03T12:44:45","modified_gmt":"2020-04-03T10:44:45","slug":"kudos-boards-meldet-vereinzelt-faelschlicherweise-fehlende-lizenz","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/kudos-boards-meldet-vereinzelt-faelschlicherweise-fehlende-lizenz\/","title":{"rendered":"Kudos Boards meldet vereinzelt f\u00e4lschlicherweise fehlende Lizenz"},"content":{"rendered":"<p>Das neue Kudos Boards f\u00fcr Docker und Kubernetes wurde bislang mit einer Testlizenz betrieben. Parallel existierte eine Premium-Lizenz f\u00fcr das klassische WebSphere Boards. Die Testlizenz lief vor einigen Wochen aus. \u00dcber den neuen Store wurde daher eine neue Erstellt. Da diese auf eine URL beschr\u00e4nkt ist, wiederholte sich der Prozess f\u00fcr das Testsystem. <\/p>\n<h2 class=\"wp-block-heading\">Neues Docker-Hub Repository<\/h2>\n<p>Zu diesem Zeitpunkt war unsere Installation mangels neuer Docker-Images bereits seit einigen Monaten nicht mehr aktualisiert worden. Daher schaute ich in der Dokumentation nach, ob es etwas Neues gibt. Tats\u00e4chlich war eine neue Hauptversion 3 des Helm-Charts verf\u00fcgbar. Die dort verlinkte beispielhafte values.yml enthielt einen Hinweis, dass das bisherige Repo <strong>iswkudos\/kudos-boards-docker<\/strong> bereits seit 16.10.2019 veraltet ist. Stattdessen soll das neue<strong> iswkudos\/kudos-boards<\/strong> genutzt werden.<\/p>\n<p>Das neue Repo hatte ich im Docker-Hub bereits vor einigen Monaten gesehen. Allerdings nie getestet, da es keinerlei Hinweise oder Dokumentation hierzu gab. Laut der kurzen Beschreibung sollte es f\u00fcr die Cloud vorgesehen sein.<\/p>\n<h2 class=\"wp-block-heading\">Neues Lizenzverhalten<\/h2>\n<p>Aufgrund des Kommentars aktualisierte ich das Repository. Das <strong>tagSuffix &#8222;2019-10-16&#8220;<\/strong> wurde zun\u00e4chst beibehalten. Prim\u00e4r ging es mir darum, das Lizenzchaos in den Griff zu bekommen. Funktionelle Updates sollten unabh\u00e4ngig davon sp\u00e4ter regul\u00e4r getestet werden. <\/p>\n<p>Nach dem Repository-Wechsel \u00e4nderte sich das Lizenzverhalten: Wie auf dem obigen Screenshot zu sehen, war vereinzelt nur noch Activities+ nutzbar. Bei den restlichen Funktionen fehle laut Oberfl\u00e4che die Lizenz. Dieses Verhalten betraf nicht alle Benutzer. Bei den Betroffenen schaffte weder das Leeren von Cache\/Cookies, noch das Wechseln des Browsers Abhilfe. Bislang wurde nur ein Hinweis eingeblendet, dass die Demo-Lizenz abgelaufen sei. Im gleichen Tag des anderen Repos wurden somit \u00c4nderungen vorgenommen.<\/p>\n<h2 class=\"wp-block-heading\">Fehlerhafte Verkn\u00fcpfung von Benutzern zu Lizenzen?<\/h2>\n<p>Auch der Admin-Bereich enth\u00e4lt neue Funktionen. \u00d6ffnet man die Organisation und klickt unten auf die Kudos Boards Premium-Lizenz, werden jene Nutzer angezeigt, die diese Lizenz verwenden:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"233\" height=\"263\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/04\/notes2_2020-04-01_15-16-41.png\" alt=\"\" class=\"wp-image-6688\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/04\/notes2_2020-04-01_15-16-41.png 233w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2020\/04\/notes2_2020-04-01_15-16-41-62x70.png 62w\" sizes=\"auto, (max-width: 233px) 100vw, 233px\" \/><\/figure>\n<\/div>\n<p>Es findet somit eine Verkn\u00fcpfung von Benutzer und Lizenz statt. Dies hat die Fehlersuche etwas erleichtert: Die Benutzer mit dem o.g. Lizenzproblem tauchten n\u00e4mlich nicht in der Benutzerliste der Premium-Lizenz auf. Im Adminbereich war zwar keine weitere Lizenz zu sehen. Da die Benutzer in der Liste fehlten, vermutete ich eine fehlerhafte Zuordnung zur alten, abgelaufenen Demo-Lizenz. Diese wird zwar m\u00f6glicherweise nicht mehr angezeigt, aber k\u00f6nnte noch in der Datenbank vorhanden sein.<\/p>\n<h2 class=\"wp-block-heading\">Collection sichern<\/h2>\n<p>Bevor man an der Datenbank experimentiert, sollte man diese sichern. Im Falle von nicht unterst\u00fctzten \u00c4nderungen wie dies hier der Fall ist, sowieso. Mit dem Kommandozeilenwerkzeug <strong>mongoexport <\/strong>k\u00f6nnen wir MongoDB-Datenbanken komplett oder teilweise sichern. In diesem Falle geht es prim\u00e4r um die Collection <strong>userlicences<\/strong>. Das Sichern der kompletten Datenbank ist auch m\u00f6glich. In diesem Falle sind s\u00e4mtliche \u00c4nderungen an Inhalten (Karten, Boards etc.) nach dem Backup jedoch verloren. Man sollte daher zumindest zus\u00e4tzlich vor Anwendung des Workarounds unten die Collection einzeln sichern:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">$ mongoexport -d kudos-licence-service -c userlicences -o \/tmp\/userlicences-col.json               \n2020-04-01T13:33:15.734+0000\tconnected to: localhost\n2020-04-01T13:33:15.736+0000\texported 62 records<\/code><\/pre>\n<p><strong>Wichtig<\/strong>:<strong> Container sind kurzlebig<\/strong>! Sobald der Pod und damit der Container neu gestartet wird, ist das in <strong>\/tmp<\/strong> gespeicherte Backup verloren! Ich empfehler daher unbedingt, beide Shells durch zweimaliges eingeben von <strong>exit<\/strong> zu schlie\u00dfen und das Backup auf den Host zu kopieren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">kubectl cp $(kubectl get po | grep mongo | awk &#039;{print $1}&#039;):\/tmp\/userlicences-col.json .<\/code><\/pre>\n<p><strong>\/tmp\/userlicences-col.json<\/strong> aus dem Datenbank-Pod wird damit in das aktuelle Arbeitsverzeichnis auf dem Host kopiert.<\/p>\n<h2 class=\"wp-block-heading\">Workaround: Verkn\u00fcpfte Lizenzen zur\u00fccksetzen<\/h2>\n<p>Daher schaute ich mir die Datenbank an. Hierf\u00fcr muss man eine Shell im MongoDB-Pod \u00f6ffnen. Alle weiteren Befehle gehen davon aus, dass <strong>kubectx <\/strong>installiert ist und man sich auf dem entsprechenden Cluster im Kudos-Boards Namespace befindet.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">kubectl exec -it $(kubectl get po | grep mongo | awk &#039;{print $1}&#039;) -- sh<\/code><\/pre>\n<p>Da man sich nun im Datenbank-Pod befindet, kann man mit dem Befehl <strong>mongo<\/strong> den CLI-Clienten \u00f6ffnen. Darin wechselt man zur Datenbank<strong> kudos-licence-service<\/strong><\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">use kudos-licence-service<\/code><\/pre>\n<p>Das Mapping von Benutzern zu Lizenzen befindet sich in der Collection <strong>userlicences<\/strong>. Ohne Quellcode habe ich via Reverse Engineering folgendes herausgefunden: Der Lizenzservice sucht bei der Nutzung von Kudos Boards nach einer Zuordnung in dieser Collection. Existiert keine, wird die h\u00f6chste Lizenz (hier Kudos Boards Premium) mit dem Benutzer verkn\u00fcpft. Dies wurde mit einzelnen Accounts sowie allen 62 bestehenden Mappings getestet. Man kann diese Collection daher mit folgendem Befehl leeren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">&gt; db.userlicences.deleteMany({})\n{ &quot;acknowledged&quot; : true, &quot;deletedCount&quot; : 62 }<\/code><\/pre>\n<p>Dies l\u00f6scht sowohl die funktionierenden Mappings, als auch die fehlerhaften. Da f\u00fcr beide Arten von Nutzern beim n\u00e4chsten Aufruf eine neue Lizenz erzeugt wird, spielt dies keine Rolle. Durch das l\u00f6schen der inkonsistenten Mappings funktioniert die Premium-Lizenz anschlie\u00dfend auch wieder bei jenen Benutzern, die bisher Fehlermeldungen erhalten haben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das neue Kudos Boards f\u00fcr Docker und Kubernetes wurde bislang mit einer Testlizenz betrieben. Parallel existierte eine Premium-Lizenz f\u00fcr das klassische WebSphere Boards. Die Testlizenz lief vor einigen Wochen aus. \u00dcber den neuen Store wurde daher eine neue Erstellt. Da diese auf eine URL beschr\u00e4nkt ist, wiederholte sich der Prozess f\u00fcr das Testsystem. Neues Docker-Hub &#8230;<\/p>\n","protected":false},"author":5,"featured_media":6703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[765,5],"tags":[760,797,798,764],"class_list":["post-6687","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hcl-connections","category-news","tag-hcl-connections","tag-isw","tag-kudos","tag-kudos-boards"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=6687"}],"version-history":[{"count":4,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6687\/revisions"}],"predecessor-version":[{"id":6692,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6687\/revisions\/6692"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/6703"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=6687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=6687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=6687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}