Skip to content
This repository was archived by the owner on Jun 11, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3f1825f
:bug: Fixed issue with memory leak on socket-server
abdheshnayak Feb 7, 2024
e2eedeb
Merge branch 'release-v1.0.1' into release-v1.0.2
abdheshnayak Feb 7, 2024
960db9c
:bug: Fixed issue with memory leak on socket-server
abdheshnayak Feb 7, 2024
9ffe5f6
ci: workflow updates to build gateway container whenever other docker
nxtcoder17 Feb 8, 2024
4d05e16
Merge branch 'release-v1.0.2' of github.com:kloudlite/api into releas…
abdheshnayak Feb 8, 2024
fb4bbf6
Fix/socket clean up (#258)
abdheshnayak Feb 8, 2024
20bca4a
fix(infra): added grpc api for cluster existance
nxtcoder19 Feb 8, 2024
f32de1f
Merge branch 'release-v1.0.2' of github.com:kloudlite/api into releas…
abdheshnayak Feb 8, 2024
7300455
Improvement/websocket for logs (#260)
abdheshnayak Feb 8, 2024
682738f
fix(apps/infra): clusterExists GRPC implementation
nxtcoder17 Feb 8, 2024
e1521ee
Merge pull request #259 from kloudlite/fix/project-deletion
nxtcoder17 Feb 8, 2024
4fddb22
Merge branch 'release-v1.0.2' of github.com:kloudlite/api into releas…
abdheshnayak Feb 8, 2024
6f6926e
feat(apps/infra): Check AWS Access, now returns true, only when the
nxtcoder17 Feb 8, 2024
05cf59d
Merge pull request #261 from kloudlite/fix/aws-cloudprovider-ready-check
nxtcoder17 Feb 8, 2024
67f76c4
Merge branch 'release-v1.0.2' of github.com:kloudlite/api into releas…
abdheshnayak Feb 9, 2024
c83f5ba
fix(console): Add environment name while publishing nats event for en…
nxtcoder19 Feb 9, 2024
73dc495
Add environment name while publishing nats event for environment reso…
nxtcoder19 Feb 9, 2024
b9f72ec
Merge pull request #263 from kloudlite/fix/nats-publish-event
nxtcoder19 Feb 9, 2024
58278e1
fix(infra): Add clustername in nats event publishing for below resour…
nxtcoder19 Feb 12, 2024
2cf1fd5
Merge pull request #264 from kloudlite/fix/infra-nats-event
nxtcoder17 Feb 12, 2024
d0b5029
Merge branch 'release-v1.0.2' of github.com:kloudlite/api into releas…
abdheshnayak Feb 12, 2024
8db502e
:art: Improved logs and resource-watcher
abdheshnayak Feb 12, 2024
003dff9
:bug: Fixed issue with jetstream stop
abdheshnayak Feb 12, 2024
038bb89
Merge pull request #265 from kloudlite/improve/logs
abdheshnayak Feb 12, 2024
d6c861e
fix(console/infra): change error return type in schema resolver
nxtcoder19 Feb 12, 2024
5ff4287
Merge pull request #266 from kloudlite/fix/error-update-schemaresolver
nxtcoder17 Feb 12, 2024
91ba3e4
fix: IAM missing account name, infra missing cluster grpc error, and vpn
nxtcoder17 Feb 13, 2024
928628b
Merge pull request #267 from kloudlite/fixes/api-fixes
nxtcoder17 Feb 13, 2024
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
5 changes: 5 additions & 0 deletions .github/workflows/gateway-container.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
name: build-gateway-image

on:
workflow_run:
workflows: ["build-docker-images"]
types:
- completed

repository_dispatch:
types:
- webhook
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ global:
clusterName: sample-cluster

providerNamespace: kl-account-kloudlite-dev
providerName: aws-creds
providerName: aws-creds2

---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,18 @@ type ResourceEventPublisherImpl struct {
logger logging.Logger
}

func (r *ResourceEventPublisherImpl) PublishProjectResourceEvent(ctx domain.ConsoleContext, projectName string, resourceType entities.ResourceType, name string, update domain.PublishMsg) {
subject := fmt.Sprintf("res-updates.account.%s.project.%s.%s.%s", ctx.AccountName, projectName, resourceType, name)
r.publish(subject, update)
}

func (r *ResourceEventPublisherImpl) PublishConsoleEvent(ctx domain.ConsoleContext, resourceType entities.ResourceType, name string, update domain.PublishMsg) {
subject := fmt.Sprintf("res-updates.account.%s.resourceType.%s.%s", ctx.AccountName, resourceType, name)
r.publish(subject, update)
}

func (r *ResourceEventPublisherImpl) PublishResourceEvent(ctx domain.ResourceContext, resourceType entities.ResourceType, name string, update domain.PublishMsg) {
subject := fmt.Sprintf("res-updates.account.%s.project.%s.%s.%s", ctx.AccountName, ctx.ProjectName, resourceType, name)
subject := fmt.Sprintf("res-updates.account.%s.project.%s.environment.%s.%s.%s", ctx.AccountName, ctx.ProjectName, ctx.EnvironmentName, resourceType, name)
r.publish(subject, update)
}

Expand Down
6 changes: 3 additions & 3 deletions apps/console/internal/app/graph/schema.resolvers.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions apps/console/internal/domain/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -271,5 +271,6 @@ const (

type ResourceEventPublisher interface {
PublishConsoleEvent(ctx ConsoleContext, resourceType entities.ResourceType, name string, update PublishMsg)
PublishProjectResourceEvent(ctx ConsoleContext, projectName string, resourceType entities.ResourceType, name string, update PublishMsg)
PublishResourceEvent(ctx ResourceContext, resourceType entities.ResourceType, name string, update PublishMsg)
}
12 changes: 6 additions & 6 deletions apps/console/internal/domain/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func (d *domain) CreateEnvironment(ctx ConsoleContext, projectName string, env e
return nil, errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, nenv.Name, PublishAdd)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, nenv.ProjectName, entities.ResourceTypeEnvironment, nenv.Name, PublishAdd)

if _, err := d.iamClient.AddMembership(ctx, &iam.AddMembershipIn{
UserId: string(ctx.UserId),
Expand Down Expand Up @@ -448,7 +448,7 @@ func (d *domain) UpdateEnvironment(ctx ConsoleContext, projectName string, env e
if err != nil {
return nil, errors.NewE(err)
}
d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, upEnv.Name, PublishUpdate)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, upEnv.ProjectName, entities.ResourceTypeEnvironment, upEnv.Name, PublishUpdate)

if err := d.applyK8sResource(ctx, upEnv.ProjectName, &upEnv.Environment, upEnv.RecordVersion); err != nil {
return nil, errors.NewE(err)
Expand All @@ -474,7 +474,7 @@ func (d *domain) DeleteEnvironment(ctx ConsoleContext, projectName string, name
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, uenv.Name, PublishUpdate)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, uenv.ProjectName, entities.ResourceTypeEnvironment, uenv.Name, PublishUpdate)

if err := d.deleteK8sResource(ctx, uenv.ProjectName, &uenv.Environment); err != nil {
if errors.Is(err, ErrNoClusterAttached) {
Expand Down Expand Up @@ -504,7 +504,7 @@ func (d *domain) OnEnvironmentApplyError(ctx ConsoleContext, errMsg, namespace,
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, uenv.Name, PublishDelete)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, uenv.ProjectName, entities.ResourceTypeEnvironment, uenv.Name, PublishDelete)

return errors.NewE(err)
}
Expand All @@ -527,7 +527,7 @@ func (d *domain) OnEnvironmentDeleteMessage(ctx ConsoleContext, env entities.Env
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, env.Name, PublishDelete)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, env.ProjectName, entities.ResourceTypeEnvironment, env.Name, PublishDelete)
return nil
}

Expand Down Expand Up @@ -560,7 +560,7 @@ func (d *domain) OnEnvironmentUpdateMessage(ctx ConsoleContext, env entities.Env
return err
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeEnvironment, uenv.Name, PublishUpdate)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, uenv.ProjectName, entities.ResourceTypeEnvironment, uenv.Name, PublishUpdate)
return nil
}

Expand Down
12 changes: 6 additions & 6 deletions apps/console/internal/domain/project-managed-service.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ func (d *domain) CreateProjectManagedService(ctx ConsoleContext, projectName str
return nil, errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProjectManagedService, pms.Name, PublishAdd)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, pms.ProjectName, entities.ResourceTypeProjectManagedService, pms.Name, PublishAdd)

return pms, nil
}
Expand Down Expand Up @@ -180,7 +180,7 @@ func (d *domain) UpdateProjectManagedService(ctx ConsoleContext, projectName str
return nil, errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProjectManagedService, service.Name, PublishUpdate)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, upmsvc.ProjectName, entities.ResourceTypeProjectManagedService, service.Name, PublishUpdate)

if err := d.applyProjectManagedService(ctx, upmsvc); err != nil {
return nil, errors.NewE(err)
Expand All @@ -206,7 +206,7 @@ func (d *domain) DeleteProjectManagedService(ctx ConsoleContext, projectName str
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProjectManagedService, name, PublishUpdate)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, upmsvc.ProjectName, entities.ResourceTypeProjectManagedService, name, PublishUpdate)

return d.deleteK8sResource(ctx, projectName, &upmsvc.ProjectManagedService)
}
Expand Down Expand Up @@ -247,7 +247,7 @@ func (d *domain) OnProjectManagedServiceApplyError(ctx ConsoleContext, projectNa
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProjectManagedService, upmsvc.Name, PublishDelete)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, upmsvc.ProjectName, entities.ResourceTypeProjectManagedService, upmsvc.Name, PublishDelete)

return errors.NewE(err)
}
Expand All @@ -263,7 +263,7 @@ func (d *domain) OnProjectManagedServiceDeleteMessage(ctx ConsoleContext, projec
if err != nil {
return errors.NewE(err)
}
d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProjectManagedService, service.Name, PublishDelete)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, projectName, entities.ResourceTypeProjectManagedService, service.Name, PublishDelete)
return nil
}

Expand Down Expand Up @@ -299,7 +299,7 @@ func (d *domain) OnProjectManagedServiceUpdateMessage(ctx ConsoleContext, projec
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProjectManagedService, upmsvc.Name, PublishUpdate)
d.resourceEventPublisher.PublishProjectResourceEvent(ctx, upmsvc.ProjectName, entities.ResourceTypeProjectManagedService, upmsvc.Name, PublishUpdate)

return nil
}
Expand Down
45 changes: 43 additions & 2 deletions apps/console/internal/domain/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"crypto/md5"
"encoding/hex"
"fmt"
"github.com/kloudlite/api/grpc-interfaces/kloudlite.io/rpc/infra"

"github.com/kloudlite/api/common/fields"
"github.com/kloudlite/api/pkg/errors"
Expand Down Expand Up @@ -59,6 +60,26 @@ func (d *domain) getClusterAttachedToProject(ctx K8sContext, projectName string)
return fn.New(string(clusterName)), nil
}

func (d *domain) clusterStatus(ctx ConsoleContext, projectName string) (*infra.ClusterExistsOut, error) {
prj, err := d.findProject(ctx, projectName)
if err != nil {
return nil, errors.NewE(err)
}

clusterExistStatus, err := d.infraClient.ClusterExists(ctx, &infra.ClusterExistsIn{
UserId: string(ctx.UserId),
UserName: ctx.UserName,
UserEmail: ctx.UserEmail,
AccountName: ctx.AccountName,
ClusterName: *prj.ClusterName,
})
if err != nil {
return nil, errors.NewE(err)
}

return clusterExistStatus, nil
}

func (d *domain) ListProjects(ctx context.Context, userId repos.ID, accountName string, search map[string]repos.MatchFilter, pagination repos.CursorPagination) (*repos.PaginatedRecord[*entities.Project], error) {
co, err := d.iamClient.Can(ctx, &iam.CanIn{
UserId: string(userId),
Expand Down Expand Up @@ -223,6 +244,26 @@ func (d *domain) DeleteProject(ctx ConsoleContext, name string) error {
return errors.Newf("unauthorized to delete project")
}

cluster, err := d.clusterStatus(ctx, name)
if err != nil {
return errors.NewE(err)
}

if !cluster.Exists {
err := d.projectRepo.DeleteOne(
ctx,
repos.Filter{
fields.AccountName: ctx.AccountName,
fields.MetadataName: name,
},
)
if err != nil {
return errors.NewE(err)
}
d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProject, name, PublishDelete)
return nil
}

uproj, err := d.projectRepo.Patch(
ctx,
repos.Filter{
Expand Down Expand Up @@ -302,7 +343,7 @@ func (d *domain) OnProjectDeleteMessage(ctx ConsoleContext, project entities.Pro
if err != nil {
return errors.NewE(err)
}
d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeApp, project.Name, PublishDelete)
d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProject, project.Name, PublishDelete)
return nil
}

Expand Down Expand Up @@ -358,7 +399,7 @@ func (d *domain) OnProjectApplyError(ctx ConsoleContext, errMsg string, name str
return errors.NewE(err)
}

d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeApp, uproject.Name, PublishDelete)
d.resourceEventPublisher.PublishConsoleEvent(ctx, entities.ResourceTypeProject, uproject.Name, PublishDelete)

return errors.NewE(err)
}
Expand Down
6 changes: 6 additions & 0 deletions apps/iam/internal/app/grpc-server.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package app

import (
"context"
"fmt"
"strings"

"github.com/kloudlite/api/apps/iam/internal/entities"
Expand Down Expand Up @@ -138,6 +139,11 @@ func (s *GrpcService) Can(ctx context.Context, in *iam.CanIn) (*iam.CanOut, erro
if err != nil {
return nil, err
}

if strings.TrimSpace(accountName) == "" {
return nil, fmt.Errorf("accountName must be provided")
}

nf := s.rbRepo.MergeMatchFilters(repos.Filter{}, map[string]repos.MatchFilter{
"resource_ref": {
MatchType: repos.MatchTypeRegex,
Expand Down
2 changes: 1 addition & 1 deletion apps/infra/internal/app/graph/schema.resolvers.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions apps/infra/internal/app/grpc-server.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,29 @@ func (g *grpcServer) GetNodepool(ctx context.Context, in *infra.GetNodepoolIn) (
}, nil
}

func (g *grpcServer) ClusterExists(ctx context.Context, in *infra.ClusterExistsIn) (*infra.ClusterExistsOut, error) {
infraCtx := domain.InfraContext{
Context: ctx,
UserId: repos.ID(in.UserId),
UserEmail: in.UserEmail,
UserName: in.UserName,
AccountName: in.AccountName,
}
cluster, err := g.d.GetCluster(infraCtx, in.ClusterName)
if err != nil {
if errors.Is(err, domain.ErrClusterNotFound) {
return &infra.ClusterExistsOut{Exists: false}, nil
}
return nil, errors.NewE(err)
}

if cluster == nil {
return &infra.ClusterExistsOut{Exists: false}, nil
}

return &infra.ClusterExistsOut{Exists: true}, nil
}

func newGrpcServer(d domain.Domain) infra.InfraServer {
return &grpcServer{
d: d,
Expand Down
4 changes: 3 additions & 1 deletion apps/infra/internal/domain/clusters.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ type ErrClusterAlreadyExists struct {
AccountName string
}

var ErrClusterNotFound error = fmt.Errorf("cluster not found")

func (e ErrClusterAlreadyExists) Error() string {
return fmt.Sprintf("cluster with name %q already exists for account: %s", e.ClusterName, e.AccountName)
}
Expand Down Expand Up @@ -504,7 +506,7 @@ func (d *domain) findCluster(ctx InfraContext, clusterName string) (*entities.Cl
}

if cluster == nil {
return nil, errors.Newf("cluster with name %q not found", clusterName)
return nil, ErrClusterNotFound
}
return cluster, nil
}
14 changes: 10 additions & 4 deletions apps/infra/internal/domain/domain-entries.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func (d *domain) CreateDomainEntry(ctx InfraContext, de entities.DomainEntry) (*
if err != nil {
return nil, errors.NewE(err)
}
d.resourceEventPublisher.PublishInfraEvent(ctx, ResourceTypeDomainEntries, nde.DomainName, PublishAdd)
d.resourceEventPublisher.PublishResourceEvent(ctx, nde.ClusterName, ResourceTypeDomainEntries, nde.DomainName, PublishAdd)

return nde, nil
}
Expand All @@ -71,15 +71,21 @@ func (d *domain) UpdateDomainEntry(ctx InfraContext, de entities.DomainEntry) (*
if err != nil {
return nil, errors.NewE(err)
}
d.resourceEventPublisher.PublishInfraEvent(ctx, ResourceTypeDomainEntries, newDe.DomainName, PublishUpdate)
d.resourceEventPublisher.PublishResourceEvent(ctx, newDe.ClusterName, ResourceTypeDomainEntries, newDe.DomainName, PublishUpdate)
return newDe, nil
}

func (d *domain) DeleteDomainEntry(ctx InfraContext, domainName string) error {
if err := d.canPerformActionInAccount(ctx, iamT.DeleteDomainEntry); err != nil {
return errors.NewE(err)
}
err := d.domainEntryRepo.DeleteOne(

existing, err := d.findDomainEntry(ctx, ctx.AccountName, domainName)
if err != nil {
return errors.NewE(err)
}

err = d.domainEntryRepo.DeleteOne(
ctx,
repos.Filter{
fields.AccountName: ctx.AccountName,
Expand All @@ -89,7 +95,7 @@ func (d *domain) DeleteDomainEntry(ctx InfraContext, domainName string) error {
if err != nil {
return errors.NewE(err)
}
d.resourceEventPublisher.PublishInfraEvent(ctx, ResourceTypeDomainEntries, domainName, PublishDelete)
d.resourceEventPublisher.PublishResourceEvent(ctx, existing.ClusterName, ResourceTypeDomainEntries, domainName, PublishDelete)
return nil
}

Expand Down
Loading