Skip to content

Commit

Permalink
Merge pull request meshery#11482 from Yashsharma1911/yash/addWorkspac…
Browse files Browse the repository at this point in the history
…eProviderAPI

[WIP] Add workspace support for local provider
  • Loading branch information
Yashsharma1911 committed Jul 31, 2024
2 parents ad65b18 + c33e958 commit 3eb7401
Show file tree
Hide file tree
Showing 9 changed files with 646 additions and 112 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ require (
github.com/layer5io/service-mesh-performance v0.6.1
github.com/lib/pq v1.10.9
github.com/manifoldco/promptui v0.9.0
github.com/meshery/schemas v0.7.11
github.com/meshery/schemas v0.7.14
github.com/nsf/termbox-go v1.1.1
github.com/olekukonko/tablewriter v0.0.5
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1689,8 +1689,8 @@ github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04
github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM=
github.com/meshery/kompose v1.26.2-0.20230425025309-3bb778d54007 h1:JuykLcZhoffc0qkstUou6sFuPvJS+HBmypIFcLDbGkI=
github.com/meshery/kompose v1.26.2-0.20230425025309-3bb778d54007/go.mod h1:UA0RzM2vfEZAW3DDWXy+ozaXBofKFRnyumBksXHz6Nw=
github.com/meshery/schemas v0.7.11 h1:RzkxJPQNVDzuBuphVJ9JoB4oTQno1590CiPgxUPpNvo=
github.com/meshery/schemas v0.7.11/go.mod h1:Pa1DgQd6fS7d6b0ZfDAvtNhK05UC18faqYYhuwo7ino=
github.com/meshery/schemas v0.7.14 h1:tFU6qed9Eqmu8VlhgNqlcneUQRm4tsyKm0ecSwUAscU=
github.com/meshery/schemas v0.7.14/go.mod h1:Pa1DgQd6fS7d6b0ZfDAvtNhK05UC18faqYYhuwo7ino=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg=
github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
Expand Down
6 changes: 5 additions & 1 deletion server/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,9 @@ func main() {
connections.Connection{},
v1beta1.Environment{},
v1beta1.EnvironmentConnectionMapping{},
v1beta1.Workspace{},
v1beta1.WorkspacesEnvironmentsMapping{},
v1beta1.WorkspacesDesignsMapping{},
_events.Event{},
)
if err != nil {
Expand All @@ -232,7 +235,8 @@ func main() {
MesheryK8sContextPersister: &models.MesheryK8sContextPersister{DB: dbHandler},
OrganizationPersister: &models.OrganizationPersister{DB: dbHandler},
ConnectionPersister: &models.ConnectionPersister{DB: dbHandler},
EnvironmentPersister: &models.EnvironmentPersister{DB: dbHandler},
EnvironmentPersister: &models.EnvironmentPersister{DB: dbHandler},
WorkspacePersister: &models.WorkspacePersister{DB: dbHandler},
KeyPersister: &models.KeyPersister{DB: dbHandler},
EventsPersister: &models.EventsPersister{DB: dbHandler},
GenericPersister: dbHandler,
Expand Down
8 changes: 5 additions & 3 deletions server/handlers/workspace_handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package handlers
import (
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"io"
"net/http"

"github.com/gorilla/mux"

"github.com/layer5io/meshery/server/models"
"github.com/meshery/schemas/models/v1beta1"
)

// swagger:route GET /api/workspaces WorkspacesAPI idGetWorkspaces
Expand Down Expand Up @@ -85,7 +87,7 @@ func (h *Handler) SaveWorkspaceHandler(w http.ResponseWriter, req *http.Request,
return
}

workspace := models.WorkspacePayload{}
workspace := v1beta1.WorkspacePayload{}
err = json.Unmarshal(bd, &workspace)
obj := "workspace"

Expand Down Expand Up @@ -145,7 +147,7 @@ func (h *Handler) UpdateWorkspaceHandler(w http.ResponseWriter, req *http.Reques
return
}

workspace := models.WorkspacePayload{}
workspace := v1beta1.WorkspacePayload{}
err = json.Unmarshal(bd, &workspace)
obj := "workspace"

Expand Down
107 changes: 70 additions & 37 deletions server/models/default_local_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ type DefaultLocalProvider struct {
KeyPersister *KeyPersister
ConnectionPersister *ConnectionPersister
EnvironmentPersister *EnvironmentPersister
WorkspacePersister *WorkspacePersister

GenericPersister *database.Handler
KubeClient *mesherykube.Client
Expand Down Expand Up @@ -154,42 +155,42 @@ func (l *DefaultLocalProvider) DeleteEnvironment(_ *http.Request, environmentID
}

func (l *DefaultLocalProvider) SaveEnvironment(_ *http.Request, environmentPayload *v1beta1.EnvironmentPayload, _ string, _ bool) ([]byte, error) {
orgId, _ := uuid.FromString(environmentPayload.OrgId)
orgId, _ := uuid.FromString(environmentPayload.OrgId)
environment := &v1beta1.Environment{
CreatedAt: time.Now(),
Description: environmentPayload.Description,
Name: environmentPayload.Name,
CreatedAt: time.Now(),
Description: environmentPayload.Description,
Name: environmentPayload.Name,
OrganizationId: orgId,
Owner: "Meshery",
UpdatedAt:time.Now(),
Owner: "Meshery",
UpdatedAt: time.Now(),
}
return l.EnvironmentPersister.SaveEnvironment(environment)
}

func (l *DefaultLocalProvider) UpdateEnvironment(_ *http.Request, environmentPayload *v1beta1.EnvironmentPayload, environmentID string) (*v1beta1.Environment, error) {
id, _ := uuid.FromString(environmentID)
orgId, _ := uuid.FromString(environmentPayload.OrgId)
orgId, _ := uuid.FromString(environmentPayload.OrgId)
environment := &v1beta1.Environment{
ID: id,
CreatedAt: time.Now(),
Description: environmentPayload.Description,
Name: environmentPayload.Name,
ID: id,
CreatedAt: time.Now(),
Description: environmentPayload.Description,
Name: environmentPayload.Name,
OrganizationId: orgId,
Owner: "Meshery",
UpdatedAt:time.Now(),
Owner: "Meshery",
UpdatedAt: time.Now(),
}
return l.EnvironmentPersister.UpdateEnvironmentByID(environment)
}

func (l *DefaultLocalProvider) AddConnectionToEnvironment(_ *http.Request, environmentID string, connectionID string) ([]byte, error) {
envId, _ := uuid.FromString(environmentID)
conId, _ := uuid.FromString(connectionID)
conId, _ := uuid.FromString(connectionID)
return l.EnvironmentPersister.AddConnectionToEnvironment(envId, conId)
}

func (l *DefaultLocalProvider) RemoveConnectionFromEnvironment(_ *http.Request, environmentID string, connectionID string) ([]byte, error) {
envId, _ := uuid.FromString(environmentID)
conId, _ := uuid.FromString(connectionID)
conId, _ := uuid.FromString(connectionID)
return l.EnvironmentPersister.DeleteConnectionFromEnvironment(envId, conId)
}

Expand Down Expand Up @@ -1424,48 +1425,80 @@ func (l *DefaultLocalProvider) SaveUsersKey(_ string, keys []*Key) ([]*Key, erro
return l.KeyPersister.SaveUsersKeys(keys)
}

func (l *DefaultLocalProvider) GetWorkspaces(_, _, _, _, _, _, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) GetWorkspaces(_, page, pageSize, search, order, filter string, orgID string) ([]byte, error) {
return l.WorkspacePersister.GetWorkspaces(orgID, search, order, page, pageSize, filter)
}

func (l *DefaultLocalProvider) GetWorkspaceByID(_ *http.Request, _, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) GetWorkspaceByID(_ *http.Request, workspaceID string, _ string) ([]byte, error) {
id := uuid.FromStringOrNil(workspaceID)
return l.WorkspacePersister.GetWorkspaceByID(id)
}

func (l *DefaultLocalProvider) DeleteWorkspace(_ *http.Request, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) DeleteWorkspace(_ *http.Request, workspaceID string) ([]byte, error) {
id := uuid.FromStringOrNil(workspaceID)
return l.WorkspacePersister.DeleteWorkspaceByID(id)
}

func (l *DefaultLocalProvider) SaveWorkspace(_ *http.Request, _ *WorkspacePayload, _ string, _ bool) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) SaveWorkspace(_ *http.Request, workspacePayload *v1beta1.WorkspacePayload, _ string, _ bool) ([]byte, error) {
orgId, _ := uuid.FromString(workspacePayload.OrganizationID)
workspace := &v1beta1.Workspace{
CreatedAt: time.Now(),
Description: workspacePayload.Description,
Name: workspacePayload.Name,
OrganizationId: orgId,
Owner: "Meshery",
UpdatedAt: time.Now(),
}
return l.WorkspacePersister.SaveWorkspace(workspace)
}

func (l *DefaultLocalProvider) UpdateWorkspace(_ *http.Request, _ *WorkspacePayload, _ string) (*Workspace, error) {
return nil, ErrLocalProviderSupport
func (l *DefaultLocalProvider) UpdateWorkspace(_ *http.Request, workspacePayload *v1beta1.WorkspacePayload, workspaceID string) (*v1beta1.Workspace, error) {
id, _ := uuid.FromString(workspaceID)
orgId, _ := uuid.FromString(workspacePayload.OrganizationID)
workspace := &v1beta1.Workspace{
ID: id,
CreatedAt: time.Now(),
Description: workspacePayload.Description,
Name: workspacePayload.Name,
OrganizationId: orgId,
Owner: "Meshery",
UpdatedAt: time.Now(),
}
return l.WorkspacePersister.UpdateWorkspaceByID(workspace)
}

func (l *DefaultLocalProvider) GetEnvironmentsOfWorkspace(_ *http.Request, _, _, _, _, _, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) AddEnvironmentToWorkspace(_ *http.Request, workspaceID string, environmentID string) ([]byte, error) {
workspaceId, _ := uuid.FromString(workspaceID)
envId, _ := uuid.FromString(environmentID)
return l.WorkspacePersister.AddEnvironmentToWorkspace(workspaceId, envId)
}

func (l *DefaultLocalProvider) AddEnvironmentToWorkspace(_ *http.Request, _, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) RemoveEnvironmentFromWorkspace(_ *http.Request, workspaceID string, environmentID string) ([]byte, error) {
workspaceId, _ := uuid.FromString(workspaceID)
envId, _ := uuid.FromString(environmentID)
return l.WorkspacePersister.DeleteEnvironmentFromWorkspace(workspaceId, envId)
}

func (l *DefaultLocalProvider) RemoveEnvironmentFromWorkspace(_ *http.Request, _ string, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) GetEnvironmentsOfWorkspace(_ *http.Request, workspaceID, page, pageSize, search, order, filter string) ([]byte, error) {
workspaceId, _ := uuid.FromString(workspaceID)
return l.WorkspacePersister.GetWorkspaceEnvironments(workspaceId, search, order, page, pageSize, filter)
}

func (l *DefaultLocalProvider) GetDesignsOfWorkspace(_ *http.Request, _, _, _, _, _, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) AddDesignToWorkspace(_ *http.Request, workspaceID string, designID string) ([]byte, error) {
workspaceId, _ := uuid.FromString(workspaceID)
designId, _ := uuid.FromString(designID)
return l.WorkspacePersister.AddDesignToWorkspace(workspaceId, designId)
}

func (l *DefaultLocalProvider) AddDesignToWorkspace(_ *http.Request, _, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) RemoveDesignFromWorkspace(_ *http.Request, workspaceID string, designID string) ([]byte, error) {
workspaceId, _ := uuid.FromString(workspaceID)
designId, _ := uuid.FromString(designID)
return l.WorkspacePersister.DeleteDesignFromWorkspace(workspaceId, designId)
}

func (l *DefaultLocalProvider) RemoveDesignFromWorkspace(_ *http.Request, _ string, _ string) ([]byte, error) {
return []byte(""), ErrLocalProviderSupport
func (l *DefaultLocalProvider) GetDesignsOfWorkspace(_ *http.Request, workspaceID, page, pageSize, search, order, filter string) ([]byte, error) {
workspaceId, _ := uuid.FromString(workspaceID)
return l.WorkspacePersister.GetWorkspaceDesigns(workspaceId, search, order, page, pageSize, filter)
}

// GetOrganization returns the organization for the given organizationID
Expand Down
Loading

0 comments on commit 3eb7401

Please sign in to comment.