Skip to content
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

feat: Cluster terminal access for Super Admins #2654

Merged
merged 72 commits into from
Dec 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
31c8f24
terminal access data business logic
kripanshdevtron Oct 17, 2022
2349098
repo impl
kripanshdevtron Oct 17, 2022
fbec423
refactoring
kripanshdevtron Oct 17, 2022
39c54d1
k8s dependency
kripanshdevtron Oct 17, 2022
fb92c55
k8s client interaction
kripanshdevtron Oct 17, 2022
52c1149
delete and sync resource handling
kripanshdevtron Oct 18, 2022
849b66f
router and rest handler commit with fetch API
kripanshdevtron Oct 19, 2022
97ca69a
session id returned at running
kripanshdevtron Oct 20, 2022
21448f9
close old session during update
kripanshdevtron Oct 20, 2022
20e43ba
terminal session dependency
kripanshdevtron Oct 20, 2022
ba3b69e
nil pointer handling
kripanshdevtron Oct 20, 2022
a6a27bb
dependency add-ons
kripanshdevtron Oct 20, 2022
ab6c5cf
cluster node names added
kripanshdevtron Oct 31, 2022
f8d3b43
patch
kripanshdevtron Nov 2, 2022
cd53b6a
session data handled
kripanshdevtron Nov 3, 2022
773839a
terminal session complete handling
kripanshdevtron Nov 3, 2022
a078372
cluster terminal stop handling
kripanshdevtron Nov 4, 2022
720471c
Merge branch 'main' into cluster-terminal-access
kripanshdevtron Nov 9, 2022
d7e2b1a
nil handling fix
kripanshdevtron Nov 9, 2022
a93fbc1
type check added
kripanshdevtron Nov 9, 2022
36be471
default namespace fix
kripanshdevtron Nov 9, 2022
829db2b
error status condition fix
kripanshdevtron Nov 9, 2022
08f82f5
session data set
kripanshdevtron Nov 9, 2022
72b00fa
stop and terminate all func api exposed
kripanshdevtron Nov 9, 2022
dc1bbc4
pod terminated error
kripanshdevtron Nov 9, 2022
e5c1ff2
update cluster terminal api fix
kripanshdevtron Nov 15, 2022
84f660a
update shell API exposed
kripanshdevtron Nov 15, 2022
88517eb
activity time init with default value
kripanshdevtron Nov 15, 2022
0e1f87d
removed commented code
kripanshdevtron Nov 16, 2022
0e7d68d
sa and crb lifecycle linked with pod lifecycle
kripanshdevtron Nov 16, 2022
a7f4016
gvk data extracted from k8s api
kripanshdevtron Nov 17, 2022
17b8f0c
dev testing fixes
kripanshdevtron Nov 17, 2022
ff31b77
refactoring and pod terminate handling
kripanshdevtron Nov 17, 2022
5fad102
test case skipped
kripanshdevtron Nov 17, 2022
c189d4f
templates fetched from cache
kripanshdevtron Nov 17, 2022
2a3f8f3
Merge branch 'main' into cluster-terminal-access
kripanshdevtron Nov 17, 2022
94ee5a1
sql query updated
kripanshdevtron Nov 17, 2022
90d40c8
refactoring
kripanshdevtron Nov 17, 2022
436b1e4
stop session during shellupdate and session limit err msg fix
kripanshdevtron Nov 19, 2022
b0a7e2f
terminal status terminated handling
kripanshdevtron Nov 21, 2022
d24363a
cluster terminal config migrated + test cases refactoring
kripanshdevtron Nov 21, 2022
5afa8c7
wrong image test case
kripanshdevtron Nov 23, 2022
5dc18f1
cluster namespaces API & fetch events and manifest API
kripanshdevtron Nov 23, 2022
d306f56
test case updated for list events and manifests
kripanshdevtron Nov 23, 2022
b74c8ec
max session limit UT test case
kripanshdevtron Nov 24, 2022
fd69584
unit test case addition + code refactoring
kripanshdevtron Nov 24, 2022
253368a
code cleaning
kripanshdevtron Nov 25, 2022
d3371c7
pod events & manifest API commited
kripanshdevtron Nov 28, 2022
f61bb15
namespace field used
kripanshdevtron Nov 28, 2022
7182ab5
events and manifest api response
kripanshdevtron Nov 28, 2022
2099728
namespace handling from request
kripanshdevtron Nov 28, 2022
a5e489e
namespace added in request
kripanshdevtron Dec 2, 2022
88b2dc1
terminal changed from bash to sh
kripanshdevtron Dec 5, 2022
b77eadc
Merge branch 'main' into cluster-terminal-access
kripanshdevtron Dec 6, 2022
f3f715c
terminal access script name updated
kripanshdevtron Dec 6, 2022
b5141c1
drop sequence cmd added
kripanshdevtron Dec 6, 2022
9040d2e
rename terminal-access pod's container name
kripanshdevtron Dec 6, 2022
f89bcae
unique constraint added
kripanshdevtron Dec 6, 2022
106f784
migration version change to 100
kripanshdevtron Dec 6, 2022
a035113
terminal access patch update
kripanshdevtron Dec 6, 2022
8ff1d62
struct validation handling
kripanshdevtron Dec 6, 2022
bac86dc
attributes data cleanup
kripanshdevtron Dec 6, 2022
c18eb3b
future scope items
kripanshdevtron Dec 6, 2022
a2a9ac2
validator added in dependency
kripanshdevtron Dec 6, 2022
15c5e24
azure spot node toleration added
kripanshdevtron Dec 9, 2022
4c073cd
Merge branch 'main' into cluster-terminal-access
kripanshdevtron Dec 9, 2022
b2a4cf1
terminal session post and put method type change
kripanshdevtron Dec 9, 2022
4294405
added devtron default debug image
kripanshdevtron Dec 12, 2022
d4382ab
cluster terminal access default images list
kripanshdevtron Dec 12, 2022
21a027a
attributes router and rest handler
kripanshdevtron Dec 13, 2022
027098d
attributes router exposed
kripanshdevtron Dec 13, 2022
0bc6fbd
terminal wire set fix
kripanshdevtron Dec 13, 2022
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
2 changes: 2 additions & 0 deletions Wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import (
"github.com/devtron-labs/devtron/api/sse"
"github.com/devtron-labs/devtron/api/sso"
"github.com/devtron-labs/devtron/api/team"
"github.com/devtron-labs/devtron/api/terminal"
"github.com/devtron-labs/devtron/api/user"
webhookHelm "github.com/devtron-labs/devtron/api/webhook/helm"
"github.com/devtron-labs/devtron/client/argocdServer"
Expand Down Expand Up @@ -132,6 +133,7 @@ func InitializeApp() (*App, error) {
module.ModuleWireSet,
apiToken.ApiTokenWireSet,
webhookHelm.WebhookHelmWireSet,
terminal.TerminalWireSet,
// -------wireset end ----------
gitSensor.GetGitSensorConfig,
gitSensor.NewGitSensorSession,
Expand Down
16 changes: 16 additions & 0 deletions api/cluster/ClusterRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ type ClusterRestHandler interface {

FindAllForAutoComplete(w http.ResponseWriter, r *http.Request)
DeleteCluster(w http.ResponseWriter, r *http.Request)
GetAllClusterNamespaces(w http.ResponseWriter, r *http.Request)
}

type ClusterRestHandlerImpl struct {
Expand Down Expand Up @@ -360,3 +361,18 @@ func (impl ClusterRestHandlerImpl) DeleteCluster(w http.ResponseWriter, r *http.
}
common.WriteJsonResp(w, err, CLUSTER_DELETE_SUCCESS_RESP, http.StatusOK)
}

func (impl ClusterRestHandlerImpl) GetAllClusterNamespaces(w http.ResponseWriter, r *http.Request) {
token := r.Header.Get("token")
clusterNamespaces := impl.clusterService.GetAllClusterNamespaces()

// RBAC enforcer applying
for clusterName, _ := range clusterNamespaces {
if ok := impl.enforcer.Enforce(token, casbin.ResourceCluster, casbin.ActionGet, strings.ToLower(clusterName)); !ok {
delete(clusterNamespaces, clusterName)
}
}
//RBAC enforcer Ends

common.WriteJsonResp(w, nil, clusterNamespaces, http.StatusOK)
}
4 changes: 4 additions & 0 deletions api/cluster/ClusterRouter.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ func (impl ClusterRouterImpl) InitClusterRouter(clusterRouter *mux.Router) {
Methods("GET").
HandlerFunc(impl.clusterRestHandler.FindAllForAutoComplete)

clusterRouter.Path("/namespaces").
Methods("GET").
HandlerFunc(impl.clusterRestHandler.GetAllClusterNamespaces)

clusterRouter.Path("").
Methods("DELETE").
HandlerFunc(impl.clusterRestHandler.DeleteCluster)
Expand Down
4 changes: 2 additions & 2 deletions api/router/AttributesRouter.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
)

type AttributesRouter interface {
initAttributesRouter(helmRouter *mux.Router)
InitAttributesRouter(helmRouter *mux.Router)
}

type AttributesRouterImpl struct {
Expand All @@ -37,7 +37,7 @@ func NewAttributesRouterImpl(attributesRestHandler restHandler.AttributesRestHan
return router
}

func (router AttributesRouterImpl) initAttributesRouter(attributesRouter *mux.Router) {
func (router AttributesRouterImpl) InitAttributesRouter(attributesRouter *mux.Router) {
attributesRouter.Path("/create").
HandlerFunc(router.attributesRestHandler.AddAttributes).Methods("POST")
attributesRouter.Path("/update").
Expand Down
10 changes: 8 additions & 2 deletions api/router/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import (
"github.com/devtron-labs/devtron/api/server"
"github.com/devtron-labs/devtron/api/sso"
"github.com/devtron-labs/devtron/api/team"
terminal2 "github.com/devtron-labs/devtron/api/terminal"
"github.com/devtron-labs/devtron/api/user"
webhookHelm "github.com/devtron-labs/devtron/api/webhook/helm"
"github.com/devtron-labs/devtron/client/cron"
Expand Down Expand Up @@ -113,6 +114,7 @@ type MuxRouter struct {
k8sCapacityRouter k8s.K8sCapacityRouter
webhookHelmRouter webhookHelm.WebhookHelmRouter
globalCMCSRouter GlobalCMCSRouter
userTerminalAccessRouter terminal2.UserTerminalAccessRouter
}

func NewMuxRouter(logger *zap.SugaredLogger, HelmRouter PipelineTriggerRouter, PipelineConfigRouter PipelineConfigRouter,
Expand All @@ -139,7 +141,7 @@ func NewMuxRouter(logger *zap.SugaredLogger, HelmRouter PipelineTriggerRouter, P
globalPluginRouter GlobalPluginRouter, moduleRouter module.ModuleRouter,
serverRouter server.ServerRouter, apiTokenRouter apiToken.ApiTokenRouter,
helmApplicationStatusUpdateHandler cron.CdApplicationStatusUpdateHandler, k8sCapacityRouter k8s.K8sCapacityRouter,
webhookHelmRouter webhookHelm.WebhookHelmRouter, globalCMCSRouter GlobalCMCSRouter) *MuxRouter {
webhookHelmRouter webhookHelm.WebhookHelmRouter, globalCMCSRouter GlobalCMCSRouter, userTerminalAccessRouter terminal2.UserTerminalAccessRouter) *MuxRouter {
r := &MuxRouter{
Router: mux.NewRouter(),
HelmRouter: HelmRouter,
Expand Down Expand Up @@ -204,6 +206,7 @@ func NewMuxRouter(logger *zap.SugaredLogger, HelmRouter PipelineTriggerRouter, P
k8sCapacityRouter: k8sCapacityRouter,
webhookHelmRouter: webhookHelmRouter,
globalCMCSRouter: globalCMCSRouter,
userTerminalAccessRouter: userTerminalAccessRouter,
}
return r
}
Expand Down Expand Up @@ -325,7 +328,7 @@ func (r MuxRouter) Init() {
r.gitOpsConfigRouter.InitGitOpsConfigRouter(gitOpsRouter)

attributeRouter := r.Router.PathPrefix("/orchestrator/attributes").Subrouter()
r.attributesRouter.initAttributesRouter(attributeRouter)
r.attributesRouter.InitAttributesRouter(attributeRouter)

userAttributeRouter := r.Router.PathPrefix("/orchestrator/attributes/user").Subrouter()
r.userAttributesRouter.InitUserAttributesRouter(userAttributeRouter)
Expand Down Expand Up @@ -404,4 +407,7 @@ func (r MuxRouter) Init() {

globalCMCSRouter := r.Router.PathPrefix("/orchestrator/global/cm-cs").Subrouter()
r.globalCMCSRouter.initGlobalCMCSRouter(globalCMCSRouter)

userTerminalAccessRouter := r.Router.PathPrefix("/orchestrator/user/terminal").Subrouter()
r.userTerminalAccessRouter.InitTerminalAccessRouter(userTerminalAccessRouter)
}
Loading