diff --git a/api/main.go b/api/main.go index ed50ffaa8..7e85f0e5f 100644 --- a/api/main.go +++ b/api/main.go @@ -9,6 +9,7 @@ import ( "github.com/up9inc/mizu/shared" "mizuserver/pkg/api" "mizuserver/pkg/middleware" + "mizuserver/pkg/models" "mizuserver/pkg/routes" "mizuserver/pkg/tap" "mizuserver/pkg/utils" @@ -107,7 +108,8 @@ func pipeChannelToSocket(connection *websocket.Conn, messageDataChannel <-chan * } for messageData := range messageDataChannel { - marshaledData, err := json.Marshal(messageData) + websocketMessage := models.CreateWebsocketTappedEntryMessage(messageData) + marshaledData, err := json.Marshal(websocketMessage) if err != nil { fmt.Printf("error converting message to json %s, (%v,%+v)\n", err, err, err) continue diff --git a/api/pkg/api/socket_server_handlers.go b/api/pkg/api/socket_server_handlers.go index 182a05038..e86be1ddb 100644 --- a/api/pkg/api/socket_server_handlers.go +++ b/api/pkg/api/socket_server_handlers.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" "github.com/antoniodipinto/ikisocket" - "github.com/mitchellh/mapstructure" "github.com/up9inc/mizu/shared" "mizuserver/pkg/controllers" + "mizuserver/pkg/models" "mizuserver/pkg/routes" "mizuserver/pkg/tap" ) @@ -55,39 +55,31 @@ func (h *RoutesEventHandlers) WebSocketError(ep *ikisocket.EventPayload) { } func (h *RoutesEventHandlers) WebSocketMessage(ep *ikisocket.EventPayload) { - if ep.Kws.GetAttribute("is_tapper") == true && h.SocketHarOutChannel != nil { - h.handleTapperMessage(ep) - } else { - h.handleControlMessage(ep) - } -} - -func (h *RoutesEventHandlers) handleTapperMessage(ep *ikisocket.EventPayload) { - var tapOutput tap.OutputChannelItem - err := json.Unmarshal(ep.Data, &tapOutput) - if err != nil { - fmt.Printf("Could not unmarshal message received from tapper websocket %v", err) - } else { - h.SocketHarOutChannel <- &tapOutput - } -} - -func (h *RoutesEventHandlers) handleControlMessage(ep *ikisocket.EventPayload) { - var socketMessage shared.MizuSocketMessage - err := json.Unmarshal(ep.Data, &socketMessage) + var socketMessageBase shared.WebSocketMessageMetadata + err := json.Unmarshal(ep.Data, &socketMessageBase) if err != nil { fmt.Printf("Could not unmarshal websocket message %v\n", err) - } else if socketMessage.MessageType == shared.TAPPING_STATUS_MESSAGE_TYPE { - var tapStatus shared.TapStatus - err := mapstructure.Decode(socketMessage.Data, &tapStatus) + } else if socketMessageBase.MessageType == shared.WebSocketMessageTypeTappedEntry { + var tappedEntryMessage models.WebSocketTappedEntryMessage + err := json.Unmarshal(ep.Data, &tappedEntryMessage) if err != nil { - fmt.Printf("Could not decode map of message type %s %v", shared.TAPPING_STATUS_MESSAGE_TYPE, err) + fmt.Printf("Could not unmarshall message of message type %s %v", socketMessageBase.MessageType, err) } else { - controllers.TapStatus = tapStatus + h.SocketHarOutChannel <- tappedEntryMessage.Data + } + } else if socketMessageBase.MessageType == shared.WebSocketMessageTypeUpdateStatus { + var statusMessage shared.WebSocketStatusMessage + err := json.Unmarshal(ep.Data, &statusMessage) + if err != nil { + fmt.Printf("Could not unmarshall message of message type %s %v", socketMessageBase.MessageType, err) + } else { + controllers.TapStatus = statusMessage.TappingStatus + broadcastToBrowserClients(ep.Data) } } } + func removeSocketUUIDFromBrowserSlice(uuidToRemove string) { newUUIDSlice := make([]string, 0, len(browserClientSocketUUIDs)) for _, uuid := range browserClientSocketUUIDs { diff --git a/api/pkg/models/models.go b/api/pkg/models/models.go index 33b9fde91..72422cbba 100644 --- a/api/pkg/models/models.go +++ b/api/pkg/models/models.go @@ -1,6 +1,8 @@ package models import ( + "github.com/up9inc/mizu/shared" + "mizuserver/pkg/tap" "time" ) @@ -43,40 +45,30 @@ type EntriesFilter struct { Timestamp int64 `query:"timestamp" validate:"required,min=1"` } +type WebSocketEntryMessage struct { + *shared.WebSocketMessageMetadata + Data *BaseEntryDetails `json:"data,omitempty"` +} - -type WebSocketMessageType string -const ( - WebSocketMessageTypeEntry WebSocketMessageType = "entry" - // WebSocketMessageTypeUpdateStatus WebSocketMessageType = "status" -) +type WebSocketTappedEntryMessage struct { + *shared.WebSocketMessageMetadata + Data *tap.OutputChannelItem +} func CreateBaseEntryWebSocketMessage(base *BaseEntryDetails) *WebSocketEntryMessage { return &WebSocketEntryMessage{ - WebSocketMessageMetadata: &WebSocketMessageMetadata{ - MessageType: WebSocketMessageTypeEntry, + WebSocketMessageMetadata: &shared.WebSocketMessageMetadata{ + MessageType: shared.WebSocketMessageTypeEntry, }, Data: base, } } -//func CreateWebSocketStatusMessage() *WebSocketStatusMessage { -// return &WebSocketEntryMessage{ -// WebSocketMessageMetadata: &WebSocketMessageMetadata{ -// MessageType: WebSocketMessageTypeUpdateStatus, -// } -// } -//} - -type WebSocketEntryMessage struct { - *WebSocketMessageMetadata - Data *BaseEntryDetails `json:"data,omitempty"` -} - -type WebSocketStatusMessage struct { - *WebSocketMessageMetadata -} - -type WebSocketMessageMetadata struct { - MessageType WebSocketMessageType `json:"messageType,omitempty"` +func CreateWebsocketTappedEntryMessage(base *tap.OutputChannelItem) *WebSocketTappedEntryMessage { + return &WebSocketTappedEntryMessage{ + WebSocketMessageMetadata: &shared.WebSocketMessageMetadata{ + MessageType: shared.WebSocketMessageTypeTappedEntry, + }, + Data: base, + } } diff --git a/cli/kubernetes/provider.go b/cli/kubernetes/provider.go index 0d4f09981..62b39a1d5 100644 --- a/cli/kubernetes/provider.go +++ b/cli/kubernetes/provider.go @@ -93,7 +93,7 @@ func (provider *Provider) CreateMizuAggregatorPod(ctx context.Context, namespace Name: podName, Image: podImage, ImagePullPolicy: core.PullAlways, - //Command: []string {"./mizuagent", "--aggregator"}, + Command: []string {"./mizuagent", "--aggregator"}, Env: []core.EnvVar{ { Name: "HOST_MODE", diff --git a/ui/src/components/StatusBar.tsx b/ui/src/components/StatusBar.tsx new file mode 100644 index 000000000..e69de29bb diff --git a/ui/src/components/style/StatusBar.sass b/ui/src/components/style/StatusBar.sass new file mode 100644 index 000000000..e69de29bb