Handle Unauthorized Kea message gracefully
Stork produces a very verbose event detail message if Kea returns an Unauthorized error. I think that details should be just "Unauthorized" without a trace log.
'json: cannot unmarshal object into Go value of type '
'[]kea.VersionGetResponse\n'
'failed to parse responses from Kea: { "result": 401, '
'"text": "Unauthorized" }\n'
'isc.org/stork/appctrl/kea.UnmarshalResponseList\n'
'\t/app/backend/appctrl/kea/kea_command.go:134\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:542\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581\n'
'failed to parse Kea response from '
'http://127.0.0.1:8000/, response was: '
'response:"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xaaVP*J-.\\xcd)Q\\xb2R010\\xd4QP*I\\xad\\x00q\\x94B\\xf3\\x12KK2\\xf2\\x8b2\\xabRS\\x94\\x14j\\x01\\x01\\x00\\x00\\xff\\xffG\\x0c\\x12\\xed)\\x00\\x00\\x00" '
'status:{}\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:544\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581\n'
'json: cannot unmarshal object into Go value of type '
'[]keactrl.HashedResponse\n'
'failed to parse responses from Kea: { "result": 401, '
'"text": "Unauthorized" }\n'
'isc.org/stork/appctrl/kea.UnmarshalResponseList\n'
'\t/app/backend/appctrl/kea/kea_command.go:134\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:542\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581\n'
'failed to parse Kea response from '
'http://127.0.0.1:8000/, response was: '
'response:"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xaaVP*J-.\\xcd)Q\\xb2R010\\xd4QP*I\\xad\\x00q\\x94B\\xf3\\x12KK2\\xf2\\x8b2\\xabRS\\x94\\x14j\\x01\\x01\\x00\\x00\\xff\\xffG\\x0c\\x12\\xed)\\x00\\x00\\x00" '
'status:{}\n'
'isc.org/stork/server/agentcomm.(*connectedAgentsData).ForwardToKeaOverHTTP\n'
'\t/app/backend/server/agentcomm/grpcli.go:544\n'
'isc.org/stork/server/apps/kea.getStateFromCA\n'
'\t/app/backend/server/apps/kea/appkea.go:84\n'
'isc.org/stork/server/apps/kea.GetAppState\n'
'\t/app/backend/server/apps/kea/appkea.go:291\n'
'isc.org/stork/server/apps.GetMachineAndAppsState\n'
'\t/app/backend/server/apps/statepuller.go:272\n'
'isc.org/stork/server/restservice.(*RestAPI).UpdateMachine\n'
'\t/app/backend/server/restservice/machines.go:589\n'
'isc.org/stork/server/gen/restapi.HandlerAPI.func42\n'
'\t'
'/app/backend/server/gen/restapi/configure_stork.go:404\n'
'isc.org/stork/server/gen/restapi/operations/services.UpdateMachineHandlerFunc.Handle\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:19\n'
'isc.org/stork/server/gen/restapi/operations/services.(*UpdateMachine).ServeHTTP\n'
'\t'
'/app/backend/server/gen/restapi/operations/services/update_machine.go:69\n'
'github.com/go-openapi/runtime/middleware.NewOperationExecutor.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/operation.go:28\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/alexedwards/scs/v2.(*SessionManager).LoadAndSave.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/alexedwards/scs/v2@v2.2.0/session.go:136\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.NewRouter.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/router.go:76\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Redoc.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/redoc.go:72\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'github.com/go-openapi/runtime/middleware.Spec.func1\n'
'\t'
'/app/tools/golang/gopath/pkg/mod/github.com/go-openapi/runtime@v0.19.6/middleware/spec.go:46\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.fileServerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:103\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.agentInstallerMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:207\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.sseMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:124\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.metricsMiddleware.func2\n'
'\t/app/backend/server/restservice/middleware.go:232\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'isc.org/stork/server/restservice.loggingMiddleware.func1\n'
'\t/app/backend/server/restservice/middleware.go:83\n'
'net/http.HandlerFunc.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2047\n'
'net/http.serverHandler.ServeHTTP\n'
'\t/app/tools/golang/go/src/net/http/server.go:2879\n'
'net/http.(*conn).serve\n'
'\t/app/tools/golang/go/src/net/http/server.go:1930\n'
'runtime.goexit\n'
'\t/app/tools/golang/go/src/runtime/asm_amd64.s:1581',