Skip to content

Commit

Permalink
Merge pull request #2293 from layer5io/kumarabd/feature/graphql
Browse files Browse the repository at this point in the history
persistence changes for meshsync data
  • Loading branch information
leecalcote committed Jan 25, 2021
2 parents 6aa846e + 4f93b16 commit 566261f
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 49 deletions.
12 changes: 12 additions & 0 deletions cmd/main.go
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/layer5io/meshery/models"
"github.com/layer5io/meshery/router"
"github.com/layer5io/meshkit/database"
meshsyncmodel "github.com/layer5io/meshsync/pkg/model"
"github.com/spf13/viper"

"github.com/sirupsen/logrus"
Expand Down Expand Up @@ -124,6 +125,17 @@ func main() {
logrus.Fatal(err)
}

err = dbHandler.AutoMigrate(
meshsyncmodel.Index{},
meshsyncmodel.ResourceTypeMeta{},
meshsyncmodel.ResourceObjectMeta{},
meshsyncmodel.ResourceSpec{},
meshsyncmodel.ResourceStatus{},
)
if err != nil {
logrus.Fatal(err)
}

lProv := &models.DefaultLocalProvider{
ProviderBaseURL: DefaultProviderURL,
MapPreferencePersister: preferencePersister,
Expand Down
6 changes: 2 additions & 4 deletions go.mod
Expand Up @@ -11,7 +11,6 @@ replace (

require (
fortio.org/fortio v1.11.4
github.com/99designs/gqlgen v0.13.0
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/docker/docker v1.13.1
Expand All @@ -25,9 +24,9 @@ require (
github.com/grafana-tools/sdk v0.0.0-20200411085644-f7626bef00b3
github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a
github.com/layer5io/gowrk2 v0.0.0-20191111234958-a4c9071c0f87
github.com/layer5io/meshery-operator v0.2.5
github.com/layer5io/meshery-operator v0.2.7
github.com/layer5io/meshkit v0.2.0
github.com/layer5io/meshsync v0.1.3
github.com/layer5io/meshsync v0.1.5
github.com/layer5io/nighthawk-go v0.1.5
github.com/layer5io/service-mesh-performance v0.3.1
github.com/pkg/errors v0.9.1
Expand All @@ -38,7 +37,6 @@ require (
github.com/spf13/cobra v1.1.1
github.com/spf13/viper v1.7.1
github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e
github.com/vektah/gqlparser/v2 v2.1.0
github.com/vmihailenco/taskq/v3 v3.0.0-beta.9.0.20200519124923-d9823546b85a
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
Expand Down
37 changes: 4 additions & 33 deletions go.sum

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions handlers/operator.go
Expand Up @@ -105,7 +105,7 @@ func (h *Handler) OperatorHandler(w http.ResponseWriter, req *http.Request, pref
return
}

er = h.subscribeToMeshsync(d)
er = h.subscribeToBroker(d)
if er != nil {
status.Error = er.Error()
return
Expand Down Expand Up @@ -143,7 +143,7 @@ func (h *Handler) initialize(delete bool) error {
return nil
}

func (h *Handler) subscribeToMeshsync(datach chan *broker.Message) error {
func (h *Handler) subscribeToBroker(datach chan *broker.Message) error {
var broker *operatorv1alpha1.Broker
mesheryclient, err := client.New(&h.config.KubeClient.RestConfig)
if err != nil {
Expand All @@ -152,14 +152,14 @@ func (h *Handler) subscribeToMeshsync(datach chan *broker.Message) error {

for {
broker, err = mesheryclient.CoreV1Alpha1().Brokers(namespace).Get(context.Background(), "meshery-broker", metav1.GetOptions{})
if err == nil && broker.Status.Endpoint != "" {
if err == nil && broker.Status.Endpoint.External != "" {
break
}
time.Sleep(1 * time.Second)
}

// subscribing to nats
natsClient, err := nats.New(broker.Status.Endpoint)
natsClient, err := nats.New(broker.Status.Endpoint.External)
if err != nil {
return err
}
Expand Down
29 changes: 25 additions & 4 deletions models/default_local_provider.go
Expand Up @@ -371,18 +371,39 @@ func (l *DefaultLocalProvider) SMPTestConfigDelete(req *http.Request, testUUID s

// RecordMeshSyncData records the mesh sync data
func (l *DefaultLocalProvider) RecordMeshSyncData(obj model.Object) error {
result := l.GenericPersister.Create(&obj)
result := l.GenericPersister.Create(&obj.Index)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.TypeMeta)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.ObjectMeta)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.Spec)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.Status)
if result.Error != nil {
return result.Error
}

fmt.Println(obj.Index.ResourceID)
return nil
}

// RecordMeshSyncData records the mesh sync data
func (l *DefaultLocalProvider) ReadMeshSyncData() ([]model.Object, error) {
var indices []model.Index
result := l.GenericPersister.Find(&indices)
var index []model.Index
result := l.GenericPersister.Find(&index)
if result.Error != nil {
return nil, result.Error
}
Expand Down Expand Up @@ -412,7 +433,7 @@ func (l *DefaultLocalProvider) ReadMeshSyncData() ([]model.Object, error) {
}

objects := make([]model.Object, 0)
for i, index := range indices {
for i, index := range index {
objects = append(objects, model.Object{
Index: index,
TypeMeta: typemetas[i],
Expand Down
67 changes: 66 additions & 1 deletion models/remote_provider.go
Expand Up @@ -847,12 +847,77 @@ func (l *RemoteProvider) SMPTestConfigDelete(req *http.Request, testUUID string)

// RecordMeshSyncData records the mesh sync data
func (l *RemoteProvider) RecordMeshSyncData(obj model.Object) error {
result := l.GenericPersister.Create(&obj.Index)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.TypeMeta)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.ObjectMeta)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.Spec)
if result.Error != nil {
return result.Error
}

result = l.GenericPersister.Create(&obj.Status)
if result.Error != nil {
return result.Error
}

return nil
}

// ReadMeshSyncData records the mesh sync data
func (l *RemoteProvider) ReadMeshSyncData() ([]model.Object, error) {
return make([]model.Object, 0), nil
var index []model.Index
result := l.GenericPersister.Find(&index)
if result.Error != nil {
return nil, result.Error
}

var typemetas []model.ResourceTypeMeta
result = l.GenericPersister.Find(&typemetas)
if result.Error != nil {
return nil, result.Error
}

var objectmetas []model.ResourceObjectMeta
result = l.GenericPersister.Find(&objectmetas)
if result.Error != nil {
return nil, result.Error
}

var specs []model.ResourceSpec
result = l.GenericPersister.Find(&specs)
if result.Error != nil {
return nil, result.Error
}

var status []model.ResourceStatus
result = l.GenericPersister.Find(&status)
if result.Error != nil {
return nil, result.Error
}

objects := make([]model.Object, 0)
for i, idx := range index {
objects = append(objects, model.Object{
Index: idx,
TypeMeta: typemetas[i],
ObjectMeta: objectmetas[i],
Spec: specs[i],
Status: status[i],
})
}
return objects, nil
}

// TarXZF takes in a source url downloads the tar.gz file
Expand Down
6 changes: 3 additions & 3 deletions router/server.go
Expand Up @@ -119,10 +119,10 @@ func NewRouter(ctx context.Context, h models.HandlerInterface, port int) *Router

gMux.Handle("/api/promGrafana/scan", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.ScanPromGrafanaHandler))))

gMux.Handle("/api/v1/system/operator/status", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.OperatorStatusHandler)))).Methods("GET")
gMux.Handle("/api/v1/system/operator", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.OperatorHandler)))).Methods("GET")
gMux.Handle("/api/system/operator/status", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.OperatorStatusHandler)))).Methods("GET")
gMux.Handle("/api/system/operator", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.OperatorHandler)))).Methods("GET")
// experimental
gMux.Handle("/api/v1/system/operator/results", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.MeshSyncDataHandler)))).Methods("GET")
gMux.Handle("/api/system/operator/results", h.ProviderMiddleware(h.AuthMiddleware(h.SessionInjectorMiddleware(h.MeshSyncDataHandler)))).Methods("GET")

gMux.Handle("/logout", h.ProviderMiddleware(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
providerI := req.Context().Value(models.ProviderCtxKey)
Expand Down

0 comments on commit 566261f

Please sign in to comment.