Add Dryad interface
authorAleksander Mistewicz <a.mistewicz@samsung.com>
Thu, 17 Aug 2017 13:17:35 +0000 (15:17 +0200)
committerMaciej Wereski <m.wereski@partner.samsung.com>
Wed, 13 Sep 2017 15:42:50 +0000 (17:42 +0200)
User, Admin and Worker communication to Boruta was designed, but an
interface in opposite direction, from Server to Worker, was missing.

Change-Id: I915c31e12b0b49d6863d1162734db7a324d709d1
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49405
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
boruta.go

index 90d34e4..a4d08c8 100644 (file)
--- a/boruta.go
+++ b/boruta.go
@@ -22,6 +22,7 @@
 package boruta
 
 import (
+       "crypto/rsa"
        "time"
 )
 
@@ -187,3 +188,17 @@ type Server interface {
        Superviser
        Workers
 }
+
+// Dryad is a MuxPi management interface used by Boruta.
+type Dryad interface {
+       // PutInMaintenance prepares MuxPi for administrative action.
+       // It blinks LEDs, prints msg on the OLED display, etc.
+       PutInMaintenance(msg string) error
+       // Prepare creates appropriate user, generates RSA key, installs public key
+       // so that it can be used for SSH authentication and returns private key.
+       // It removes current instance of the user, etc.
+       Prepare() (*rsa.PrivateKey, error)
+       // Healthcheck tests Dryad for system state, STM functions and state on MuxPi.
+       // It may cause Dryad to call SetFail of Worker interface if the problem detected is critical.
+       Healthcheck() error
+}