added helm to sidebar after rebase, sync CE with EE
This commit is contained in:
@@ -24,17 +24,19 @@ type requestBouncer interface {
|
||||
type Handler struct {
|
||||
*mux.Router
|
||||
requestBouncer requestBouncer
|
||||
DataStore portainer.DataStore
|
||||
dataStore portainer.DataStore
|
||||
kubeConfigService kubernetes.KubeConfigService
|
||||
HelmPackageManager libhelm.HelmPackageManager
|
||||
helmPackageManager libhelm.HelmPackageManager
|
||||
}
|
||||
|
||||
// NewHandler creates a handler to manage endpoint group operations.
|
||||
func NewHandler(bouncer requestBouncer, kubeConfigService kubernetes.KubeConfigService) *Handler {
|
||||
func NewHandler(bouncer requestBouncer, dataStore portainer.DataStore, helmPackageManager libhelm.HelmPackageManager, kubeConfigService kubernetes.KubeConfigService) *Handler {
|
||||
h := &Handler{
|
||||
Router: mux.NewRouter(),
|
||||
requestBouncer: bouncer,
|
||||
kubeConfigService: kubeConfigService,
|
||||
Router: mux.NewRouter(),
|
||||
requestBouncer: bouncer,
|
||||
dataStore: dataStore,
|
||||
helmPackageManager: helmPackageManager,
|
||||
kubeConfigService: kubeConfigService,
|
||||
}
|
||||
|
||||
// `helm install [NAME] [CHART] flags`
|
||||
@@ -45,10 +47,12 @@ func NewHandler(bouncer requestBouncer, kubeConfigService kubernetes.KubeConfigS
|
||||
}
|
||||
|
||||
// NewTemplateHandler creates a template handler to manage endpoint group operations.
|
||||
func NewTemplateHandler(bouncer requestBouncer) *Handler {
|
||||
func NewTemplateHandler(bouncer requestBouncer, dataStore portainer.DataStore, helmPackageManager libhelm.HelmPackageManager) *Handler {
|
||||
h := &Handler{
|
||||
Router: mux.NewRouter(),
|
||||
requestBouncer: bouncer,
|
||||
Router: mux.NewRouter(),
|
||||
dataStore: dataStore,
|
||||
helmPackageManager: helmPackageManager,
|
||||
requestBouncer: bouncer,
|
||||
}
|
||||
// `helm search [COMMAND] [CHART] flags`
|
||||
h.Handle("/templates/helm",
|
||||
@@ -68,7 +72,7 @@ func (handler *Handler) GetEndpoint(r *http.Request) (*portainer.Endpoint, *http
|
||||
return nil, &httperror.HandlerError{http.StatusBadRequest, "Invalid endpoint identifier route variable", err}
|
||||
}
|
||||
|
||||
endpoint, err := handler.DataStore.Endpoint().Endpoint(portainer.EndpointID(endpointID))
|
||||
endpoint, err := handler.dataStore.Endpoint().Endpoint(portainer.EndpointID(endpointID))
|
||||
if err == bolterrors.ErrObjectNotFound {
|
||||
return nil, &httperror.HandlerError{http.StatusNotFound, "Unable to find an endpoint with the specified identifier inside the database", err}
|
||||
} else if err != nil {
|
||||
|
||||
@@ -86,7 +86,7 @@ func (handler *Handler) helmInstall(w http.ResponseWriter, r *http.Request) *htt
|
||||
return &httperror.HandlerError{http.StatusUnauthorized, "Unauthorized", err}
|
||||
}
|
||||
|
||||
settings, err := handler.DataStore.Settings().Settings()
|
||||
settings, err := handler.dataStore.Settings().Settings()
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "Unable to retrieve settings", Err: err}
|
||||
}
|
||||
@@ -145,7 +145,7 @@ func (handler *Handler) installChart(repo string, endpoint *portainer.Endpoint,
|
||||
installOpts.ValuesFile = file.Name()
|
||||
}
|
||||
|
||||
release, err := handler.HelmPackageManager.Install(installOpts)
|
||||
release, err := handler.helmPackageManager.Install(installOpts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import (
|
||||
// @failure 500 "Server error"
|
||||
// @router /templates/helm [get]
|
||||
func (handler *Handler) helmRepoSearch(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {
|
||||
settings, err := handler.DataStore.Settings().Settings()
|
||||
settings, err := handler.dataStore.Settings().Settings()
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "Unable to retrieve settings", Err: err}
|
||||
}
|
||||
|
||||
@@ -14,18 +14,18 @@ import (
|
||||
)
|
||||
|
||||
func Test_helmRepoSearch(t *testing.T) {
|
||||
h := NewTemplateHandler(helper.NewTestRequestBouncer())
|
||||
assert.NotNil(t, h, "Handler should not fail")
|
||||
is := assert.New(t)
|
||||
|
||||
defaultSettings := &portainer.Settings{
|
||||
HelmRepositoryURL: portainer.DefaultHelmRepositoryURL,
|
||||
}
|
||||
h.DataStore = helper.NewDatastore(helper.WithSettingsService(defaultSettings))
|
||||
h.HelmPackageManager = test.NewMockHelmBinaryPackageManager("")
|
||||
store := helper.NewDatastore(helper.WithSettingsService(defaultSettings))
|
||||
helmPackageManager := test.NewMockHelmBinaryPackageManager("")
|
||||
h := NewTemplateHandler(helper.NewTestRequestBouncer(), store, helmPackageManager)
|
||||
|
||||
assert.NotNil(t, h, "Handler should not fail")
|
||||
|
||||
t.Run("helmRepoSearch", func(t *testing.T) {
|
||||
is := assert.New(t)
|
||||
|
||||
req := httptest.NewRequest(http.MethodGet, "/templates/helm", nil)
|
||||
rr := httptest.NewRecorder()
|
||||
h.ServeHTTP(rr, req)
|
||||
|
||||
@@ -23,7 +23,7 @@ import (
|
||||
// @failure 500 "Server error"
|
||||
// @router /templates/helm/{chart}/{command} [get]
|
||||
func (handler *Handler) helmShow(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {
|
||||
settings, err := handler.DataStore.Settings().Settings()
|
||||
settings, err := handler.dataStore.Settings().Settings()
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "Unable to retrieve settings", Err: err}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ func (handler *Handler) helmShow(w http.ResponseWriter, r *http.Request) *httper
|
||||
Chart: chart,
|
||||
Repo: settings.HelmRepositoryURL,
|
||||
}
|
||||
result, err := handler.HelmPackageManager.Show(showOptions)
|
||||
result, err := handler.helmPackageManager.Show(showOptions)
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{
|
||||
StatusCode: http.StatusInternalServerError,
|
||||
|
||||
@@ -14,17 +14,16 @@ import (
|
||||
)
|
||||
|
||||
func Test_helmShow(t *testing.T) {
|
||||
chartName := "test-nginx"
|
||||
is := assert.New(t)
|
||||
|
||||
h := NewTemplateHandler(helper.NewTestRequestBouncer())
|
||||
is.NotNil(h, "Handler should not fail")
|
||||
|
||||
defaultSettings := &portainer.Settings{
|
||||
HelmRepositoryURL: portainer.DefaultHelmRepositoryURL,
|
||||
}
|
||||
h.DataStore = helper.NewDatastore(helper.WithSettingsService(defaultSettings))
|
||||
h.HelmPackageManager = test.NewMockHelmBinaryPackageManager("")
|
||||
store := helper.NewDatastore(helper.WithSettingsService(defaultSettings))
|
||||
helmPackageManager := test.NewMockHelmBinaryPackageManager("")
|
||||
h := NewTemplateHandler(helper.NewTestRequestBouncer(), store, helmPackageManager)
|
||||
|
||||
is.NotNil(h, "Handler should not fail")
|
||||
|
||||
commands := map[string]string{
|
||||
"values": test.MockDataValues,
|
||||
@@ -32,9 +31,9 @@ func Test_helmShow(t *testing.T) {
|
||||
"readme": test.MockDataReadme,
|
||||
}
|
||||
|
||||
chartName := "test-nginx"
|
||||
for cmd, expect := range commands {
|
||||
t.Run(cmd, func(t *testing.T) {
|
||||
is := assert.New(t)
|
||||
is.NotNil(h, "Handler should not fail")
|
||||
|
||||
req := httptest.NewRequest("GET", fmt.Sprintf("/templates/helm/%s/%s", chartName, cmd), nil)
|
||||
|
||||
@@ -171,13 +171,9 @@ func (server *Server) Start() error {
|
||||
|
||||
var fileHandler = file.NewHandler(filepath.Join(server.AssetsPath, "public"))
|
||||
|
||||
var endpointHelmHandler = helmhandler.NewHandler(requestBouncer, server.KubeConfigService)
|
||||
endpointHelmHandler.DataStore = server.DataStore
|
||||
endpointHelmHandler.HelmPackageManager = server.HelmPackageManager
|
||||
var endpointHelmHandler = helmhandler.NewHandler(requestBouncer, server.DataStore, server.HelmPackageManager, server.KubeConfigService)
|
||||
|
||||
var helmTemplatesHandler = helmhandler.NewTemplateHandler(requestBouncer)
|
||||
helmTemplatesHandler.DataStore = server.DataStore
|
||||
helmTemplatesHandler.HelmPackageManager = server.HelmPackageManager
|
||||
var helmTemplatesHandler = helmhandler.NewTemplateHandler(requestBouncer, server.DataStore, server.HelmPackageManager)
|
||||
|
||||
var motdHandler = motd.NewHandler(requestBouncer)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user