8000 draft(nats): initial adding Nats by drochow Β· Pull Request #553 Β· cloudoperators/heureka Β· GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

draft(nats): initial adding Nats #553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ run-%: mockery gqlgen
start: stop
docker-compose --profile db up

start-with-queue: stop
docker-compose --profile storage up

# Start all container. This expects the heureka bin to be amd64 because the image in the docker-compose is amd64
start-all-%: stop
docker-compose --profile db --profile heureka up --build --force-recreate
Expand Down
60 changes: 60 additions & 0 deletions cmd/event_handler/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and Greenhouse contributors
// SPDX-License-Identifier: Apache-2.0

package main

import (
"fmt"
"github.com/cloudoperators/heureka/internal/app"
"github.com/cloudoperators/heureka/internal/database/mariadb"
"github.com/cloudoperators/heureka/internal/event/nats"
"os"
"os/signal"
"syscall"

"github.com/cloudoperators/heureka/internal/util"
"github.com/cloudoperators/heureka/pkg/log"
"github.com/kelseyhightower/envconfig"
"github.com/sirupsen/logrus"
)

var (
mode string
)

func main() {
fmt.Println(util.HeurekaFiglet)
var cfg util.Config
log.InitLog()

err := envconfig.Process("heureka", &cfg)
if err != nil {
logrus.WithField("error", err).Fatal("Error while reading env config %s", "test")
return
}
cfg.ConfigToConsole()

// initialize the database
db, err := mariadb.NewSqlDatabase(cfg)
if err != nil {
logrus.WithError(err).Fatalln("Error while Creating Db")
}
defer db.CloseConnection()

er := nats.NewEventRegistry(db)
defer er.Shutdown()

// initialize the application
application := app.NewHeurekaApp(db, er)
defer application.Shutdown()

application.SubscribeHandlers()

// Create a channel to listen for OS signals
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

// Block until a signal is received
sig := <-sigChan
fmt.Printf("Received signal: %s, shutting down...\n", sig)
}
2 changes: 1 addition & 1 deletion cmd/heureka/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ package main

import (
"fmt"

"github.com/cloudoperators/heureka/internal/database/mariadb/test"
"github.com/cloudoperators/heureka/internal/server"
"github.com/cloudoperators/heureka/internal/util"
Expand Down Expand Up @@ -37,6 +36,7 @@ func main() {
if err != nil {
logrus.WithError(err).Fatalln("Error while resetting database schema.")
}

err = dbManager.Setup()
if err != nil {
logrus.WithError(err).Fatalln("Error while setting up database.")
Expand Down
12 changes: 12 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ services:
restart: always
profiles:
- db
- storage
environment:
MARIADB_USER: ${DB_USER}
MARIADB_PASSWORD: ${DB_PASSWORD}
Expand All @@ -31,6 +32,17 @@ services:
ports:
- "3306:3306"

heureka-nats:
image: nats:latest
container_name: nats
restart: always
profiles:
- queue
- storage
ports:
- "4222:4222"
- "8222:8222"

heureka-app:
build: .
container_name: heureka-app
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nats-io/nats.go v1.39.1 // indirect
github.com/nats-io/nkeys v0.4.9 // indirect
github.com/nats-io/nuid v1.0.1 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,12 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nats-io/nats.go v1.39.1 h1:oTkfKBmz7W047vRxV762M67ZdXeOtUgvbBaNoQ+3PPk=
github.com/nats-io/nats.go v1.39.1/go.mod h1:MgRb8oOdigA6cYpEPhXJuRVH6UE/V4jblJ2jQ27IXYM=
github.com/nats-io/nkeys v0.4.9 h1:qe9Faq2Gxwi6RZnZMXfmGMZkg3afLLOtrU+gDZJ35b0=
github.com/nats-io/nkeys v0.4.9/go.mod h1:jcMqs+FLG+W5YO36OX6wFIFcmpdAns+w1Wm6D3I/evE=
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo/v2 v2.23.0 h1:FA1xjp8ieYDzlgS5ABTpdUDB7wtngggONc8a7ku2NqQ=
Expand Down
57 changes: 56 additions & 1 deletion internal/app/activity/activity_handler_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
package activity

import (
"github.com/cloudoperators/heureka/internal/app/event"
"encoding/json"
"github.com/cloudoperators/heureka/internal/entity"
"github.com/cloudoperators/heureka/internal/event"
)

const (
Expand All @@ -24,6 +25,12 @@ type ActivityCreateEvent struct {
Activity *entity.Activity
}

func (e ActivityCreateEvent) Unmarshal(data []byte) (event.Event, error) {
event := &ActivityCreateEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *ActivityCreateEvent) Name() event.EventName {
return ActivityCreateEventName
}
Expand All @@ -32,6 +39,12 @@ type ActivityUpdateEvent struct {
Activity *entity.Activity
}

func (e ActivityUpdateEvent) Unmarshal(data []byte) (event.Event, error) {
event := &ActivityUpdateEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *ActivityUpdateEvent) Name() event.EventName {
return ActivityUpdateEventName
}
Expand All @@ -40,6 +53,12 @@ type ActivityDeleteEvent struct {
ActivityID int64
}

func (e ActivityDeleteEvent) Unmarshal(data []byte) (event.Event, error) {
event := &ActivityDeleteEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *ActivityDeleteEvent) Name() event.EventName {
return ActivityDeleteEventName
}
Expand All @@ -49,6 +68,12 @@ type AddServiceToActivityEvent struct {
ServiceID int64
}

func (e AddServiceToActivityEvent) Unmarshal(data []byte) (event.Event, error) {
event := &AddServiceToActivityEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *AddServiceToActivityEvent) Name() event.EventName {
return AddServiceToActivityEventName
}
Expand All @@ -58,6 +83,12 @@ type RemoveServiceFromActivityEvent struct {
ServiceID int64
}

func (e RemoveServiceFromActivityEvent) Unmarshal(data []byte) (event.Event, error) {
event := &RemoveServiceFromActivityEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *RemoveServiceFromActivityEvent) Name() event.EventName {
return RemoveServiceFromActivityEventName
}
Expand All @@ -67,6 +98,12 @@ type AddIssueToActivityEvent struct {
IssueID int64
}

func (e AddIssueToActivityEvent) Unmarshal(data []byte) (event.Event, error) {
event := &AddIssueToActivityEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *AddIssueToActivityEvent) Name() event.EventName {
return AddIssueToActivityEventName
}
Expand All @@ -76,6 +113,12 @@ type RemoveIssueFromActivityEvent struct {
IssueID int64
}

func (e RemoveIssueFromActivityEvent) Unmarshal(data []byte) (event.Event, error) {
event := &RemoveIssueFromActivityEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (a *RemoveIssueFromActivityEvent) Name() event.EventName {
return RemoveIssueFromActivityEventName
}
Expand All @@ -86,6 +129,12 @@ type ListActivitiesEvent struct {
Activities *entity.List[entity.ActivityResult]
}

func (e ListActivitiesEvent) Unmarshal(data []byte) (event.Event, error) {
event := &ListActivitiesEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (l *ListActivitiesEvent) Name() event.EventName {
return ListActivitiesEventName
}
Expand All @@ -95,6 +144,12 @@ type GetActivityEvent struct {
Activity *entity.Activity
}

func (e GetActivityEvent) Unmarshal(data []byte) (event.Event, error) {
event := &GetActivityEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (g *GetActivityEvent) Name() event.EventName {
return GetActivityEventName
}
3 changes: 2 additions & 1 deletion internal/app/activity/activity_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package activity_test

import (
event2 "github.com/cloudoperators/heureka/internal/event"
"math"
"testing"

Expand All @@ -29,7 +30,7 @@ var er event.EventRegistry

var _ = BeforeSuite(func() {
db := mocks.NewMockDatabase(GinkgoT())
er = event.NewEventRegistry(db)
er = event2.NewEventRegistry(db)
})

func activityFilter() *entity.ActivityFilter {
Expand Down
33 changes: 32 additions & 1 deletion internal/app/component/component_handler_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
package component

import (
"github.com/cloudoperators/heureka/internal/app/event"
"encoding/json"
"github.com/cloudoperators/heureka/internal/entity"
"github.com/cloudoperators/heureka/internal/event"
)

const (
Expand All @@ -22,6 +23,12 @@ type ListComponentsEvent struct {
Components *entity.List[entity.ComponentResult]
}

func (e ListComponentsEvent) Unmarshal(data []byte) (event.Event, error) {
event := &ListComponentsEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (e *ListComponentsEvent) Name() event.EventName {
return ListComponentsEventName
}
Expand All @@ -30,6 +37,12 @@ type CreateComponentEvent struct {
Component *entity.Component
}

func (e CreateComponentEvent) Unmarshal(data []byte) (event.Event, error) {
event := &CreateComponentEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (e *CreateComponentEvent) Name() event.EventName {
return CreateComponentEventName
}
Expand All @@ -38,6 +51,12 @@ type UpdateComponentEvent struct {
Component *entity.Component
}

func (e UpdateComponentEvent) Unmarshal(data []byte) (event.Event, error) {
event := &UpdateComponentEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (e *UpdateComponentEvent) Name() event.EventName {
return UpdateComponentEventName
}
Expand All @@ -46,6 +65,12 @@ type DeleteComponentEvent struct {
ComponentID int64
}

func (e DeleteComponentEvent) Unmarshal(data []byte) (event.Event, error) {
event := &DeleteComponentEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (e *DeleteComponentEvent) Name() event.EventName {
return DeleteComponentEventName
}
Expand All @@ -56,6 +81,12 @@ type ListComponentCcrnsEvent struct {
CCRNs []string
}

func (e ListComponentCcrnsEvent) Unmarshal(data []byte) (event.Event, error) {
event := &ListComponentCcrnsEvent{}
err := json.Unmarshal(data, event)
return event, err
}

func (e *ListComponentCcrnsEvent) Name() event.EventName {
return ListComponentCcrnsEventName
}
3 changes: 2 additions & 1 deletion internal/app/component/component_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package component_test

import (
event2 "github.com/cloudoperators/heureka/internal/event"
"math"
"testing"

Expand All @@ -28,7 +29,7 @@ var er event.EventRegistry

var _ = BeforeSuite(func() {
db := mocks.NewMockDatabase(GinkgoT())
er = event.NewEventRegistry(db)
er = event2.NewEventRegistry(db)
})

func getComponentFilter() *entity.ComponentFilter {
Expand Down
Loading
0