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
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 apps/console/internal/app/gqlgen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -193,3 +193,6 @@ models:
Github__com___kloudlite___operator___apis___crds___v1__EnvironmentRoutingMode:
model: github.com/kloudlite/operator/apis/crds/v1.EnvironmentRoutingMode

Github__com___kloudlite___operator___apis___crds___v1__AppInterceptPortMappingsIn:
model: github.com/kloudlite/operator/apis/crds/v1.AppInterceptPortMappings

25 changes: 25 additions & 0 deletions apps/console/internal/app/graph/common-types.resolvers.go

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

1,000 changes: 973 additions & 27 deletions apps/console/internal/app/graph/generated/generated.go

Large diffs are not rendered by default.

42 changes: 32 additions & 10 deletions apps/console/internal/app/graph/model/models_gen.go

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

6 changes: 3 additions & 3 deletions apps/console/internal/app/graph/schema.graphqls
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,14 @@ type Mutation {
core_cloneEnvironment(sourceEnvName: String!, destinationEnvName: String!, displayName: String!, environmentRoutingMode: Github__com___kloudlite___operator___apis___crds___v1__EnvironmentRoutingMode!): Environment @isLoggedInAndVerified @hasAccount

# image pull secrets
core_createImagePullSecret(imagePullSecretIn: ImagePullSecretIn!): ImagePullSecret @isLoggedInAndVerified @hasAccount
core_createImagePullSecret(pullSecret: ImagePullSecretIn!): ImagePullSecret @isLoggedInAndVerified @hasAccount
core_updateImagePullSecret(pullSecret: ImagePullSecretIn!): ImagePullSecret @isLoggedInAndVerified @hasAccount
core_deleteImagePullSecret(name: String!): Boolean! @isLoggedInAndVerified @hasAccount

core_createApp(envName: String!, app: AppIn!): App @isLoggedInAndVerified @hasAccount
core_updateApp(envName: String!, app: AppIn!): App @isLoggedInAndVerified @hasAccount
core_deleteApp(envName: String!, appName: String!): Boolean! @isLoggedInAndVerified @hasAccount
core_interceptApp(envName: String!, appname: String!, deviceName: String!, intercept: Boolean!): Boolean! @isLoggedInAndVerified @hasAccount
core_interceptApp(envName: String!, appname: String!, deviceName: String!, intercept: Boolean!, portMappings: [Github__com___kloudlite___operator___apis___crds___v1__AppInterceptPortMappingsIn!]): Boolean! @isLoggedInAndVerified @hasAccount

core_createConfig(envName: String!, config: ConfigIn!): Config @isLoggedInAndVerified @hasAccount
core_updateConfig(envName: String!, config: ConfigIn!): Config @isLoggedInAndVerified @hasAccount
Expand All @@ -170,7 +171,6 @@ type Mutation {
# core_updateProjectManagedService(pmsvc: ProjectManagedServiceIn!): ProjectManagedService @isLoggedInAndVerified @hasAccount
# core_deleteProjectManagedService(pmsvcName: String!): Boolean! @isLoggedInAndVerified @hasAccount


core_createVPNDevice(vpnDevice: ConsoleVPNDeviceIn!): ConsoleVPNDevice @isLoggedInAndVerified @hasAccount
core_updateVPNDevice(vpnDevice: ConsoleVPNDeviceIn!): ConsoleVPNDevice @isLoggedInAndVerified @hasAccount

Expand Down
33 changes: 27 additions & 6 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.

Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,18 @@ type Github__com___kloudlite___operator___apis___crds___v1__AppInterceptPortMapp
devicePort: Int!
}

type Github__com___kloudlite___operator___apis___crds___v1__AppRouter @shareable {
backendProtocol: String
basicAuth: Github__com___kloudlite___operator___apis___crds___v1__BasicAuth
cors: Github__com___kloudlite___operator___apis___crds___v1__Cors
domains: [String!]!
https: Github__com___kloudlite___operator___apis___crds___v1__Https
ingressClass: String
maxBodySizeInMB: Int
rateLimit: Github__com___kloudlite___operator___apis___crds___v1__RateLimit
routes: [Github__com___kloudlite___operator___apis___crds___v1__Route!]
}

type Github__com___kloudlite___operator___apis___crds___v1__AppSpec @shareable {
containers: [Github__com___kloudlite___operator___apis___crds___v1__AppContainer!]!
displayName: String
Expand All @@ -55,6 +67,7 @@ type Github__com___kloudlite___operator___apis___crds___v1__AppSpec @shareable {
nodeSelector: Map
region: String
replicas: Int
router: Github__com___kloudlite___operator___apis___crds___v1__AppRouter
serviceAccount: String
services: [Github__com___kloudlite___operator___apis___crds___v1__AppSvc!]
tolerations: [K8s__io___api___core___v1__Toleration!]
Expand Down Expand Up @@ -320,6 +333,7 @@ type PageInfo @shareable {

input Github__com___kloudlite___operator___apis___common____types__MsvcRefIn {
apiVersion: String
clusterName: String!
kind: String
name: String!
namespace: String!
Expand All @@ -345,6 +359,18 @@ input Github__com___kloudlite___operator___apis___crds___v1__AppInterceptPortMap
devicePort: Int!
}

input Github__com___kloudlite___operator___apis___crds___v1__AppRouterIn {
backendProtocol: String
basicAuth: Github__com___kloudlite___operator___apis___crds___v1__BasicAuthIn
cors: Github__com___kloudlite___operator___apis___crds___v1__CorsIn
domains: [String!]!
https: Github__com___kloudlite___operator___apis___crds___v1__HttpsIn
ingressClass: String
maxBodySizeInMB: Int
rateLimit: Github__com___kloudlite___operator___apis___crds___v1__RateLimitIn
routes: [Github__com___kloudlite___operator___apis___crds___v1__RouteIn!]
}

input Github__com___kloudlite___operator___apis___crds___v1__AppSpecIn {
containers: [Github__com___kloudlite___operator___apis___crds___v1__AppContainerIn!]!
displayName: String
Expand All @@ -354,6 +380,7 @@ input Github__com___kloudlite___operator___apis___crds___v1__AppSpecIn {
nodeSelector: Map
region: String
replicas: Int
router: Github__com___kloudlite___operator___apis___crds___v1__AppRouterIn
serviceAccount: String
services: [Github__com___kloudlite___operator___apis___crds___v1__AppSvcIn!]
tolerations: [K8s__io___api___core___v1__TolerationIn!]
Expand Down
3 changes: 2 additions & 1 deletion apps/console/internal/domain/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ type Domain interface {
UpdateApp(ctx ResourceContext, app entities.App) (*entities.App, error)
DeleteApp(ctx ResourceContext, name string) error

InterceptApp(ctx ResourceContext, appName string, deviceName string, intercept bool) (bool, error)
InterceptApp(ctx ResourceContext, appName string, deviceName string, intercept bool, portMappings []crdsv1.AppInterceptPortMappings) (bool, error)
RestartApp(ctx ResourceContext, appName string) error

OnAppApplyError(ctx ResourceContext, errMsg string, name string, opts UpdateAndDeleteOpts) error
Expand Down Expand Up @@ -220,6 +220,7 @@ type Domain interface {
ListImagePullSecrets(ctx ConsoleContext, search map[string]repos.MatchFilter, pagination repos.CursorPagination) (*repos.PaginatedRecord[*entities.ImagePullSecret], error)
GetImagePullSecret(ctx ConsoleContext, name string) (*entities.ImagePullSecret, error)
CreateImagePullSecret(ctx ConsoleContext, secret entities.ImagePullSecret) (*entities.ImagePullSecret, error)
UpdateImagePullSecret(ctx ConsoleContext, secret entities.ImagePullSecret) (*entities.ImagePullSecret, error)
DeleteImagePullSecret(ctx ConsoleContext, name string) error

OnImagePullSecretApplyError(ctx ConsoleContext, errMsg string, name string, opts UpdateAndDeleteOpts) error
Expand Down
20 changes: 13 additions & 7 deletions apps/console/internal/domain/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,16 +209,21 @@ func (d *domain) UpdateApp(ctx ResourceContext, appIn entities.App) (*entities.A
}

// InterceptApp implements Domain.
func (d *domain) InterceptApp(ctx ResourceContext, appName string, deviceName string, intercept bool) (bool, error) {
func (d *domain) InterceptApp(ctx ResourceContext, appName string, deviceName string, intercept bool, portMappings []crdsv1.AppInterceptPortMappings) (bool, error) {
if err := d.canMutateResourcesInEnvironment(ctx); err != nil {
return false, errors.NewE(err)
}
uApp, err := d.appRepo.Patch(ctx, ctx.DBFilters().Add(fields.MetadataName, appName), repos.Document{
fc.AppSpecIntercept: crdsv1.Intercept{
Enabled: intercept,
ToDevice: deviceName,
},
})

patch := repos.Document{
fc.AppSpecInterceptEnabled: intercept,
fc.AppSpecInterceptToDevice: deviceName,
}

if portMappings != nil {
patch[fc.AppSpecInterceptPortMappings] = portMappings
}

uApp, err := d.appRepo.Patch(ctx, ctx.DBFilters().Add(fields.MetadataName, appName), patch)
if err != nil {
return false, errors.NewE(err)
}
Expand Down Expand Up @@ -295,6 +300,7 @@ func (d *domain) OnAppApplyError(ctx ResourceContext, errMsg string, name string
if err != nil {
return errors.NewE(err)
}

d.resourceEventPublisher.PublishResourceEvent(ctx, entities.ResourceTypeApp, uapp.Name, PublishDelete)
return errors.NewE(err)
}
Expand Down
Loading