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: hibernate devtron app #6356

Open
wants to merge 10 commits into
base: develop
Choose a base branch
from
6 changes: 3 additions & 3 deletions Wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ import (
"github.com/devtron-labs/devtron/pkg/build"
"github.com/devtron-labs/devtron/pkg/build/artifacts/imageTagging"
pipeline6 "github.com/devtron-labs/devtron/pkg/build/pipeline"
"github.com/devtron-labs/devtron/pkg/bulkAction"
"github.com/devtron-labs/devtron/pkg/bulkAction/service"
"github.com/devtron-labs/devtron/pkg/chart"
"github.com/devtron-labs/devtron/pkg/chart/gitOpsConfig"
chartRepoRepository "github.com/devtron-labs/devtron/pkg/chartRepo/repository"
Expand Down Expand Up @@ -355,8 +355,8 @@ func InitializeApp() (*App, error) {
wire.Bind(new(gitOpsConfig.DevtronAppGitOpConfigService), new(*gitOpsConfig.DevtronAppGitOpConfigServiceImpl)),
chart.NewChartServiceImpl,
wire.Bind(new(chart.ChartService), new(*chart.ChartServiceImpl)),
bulkAction.NewBulkUpdateServiceImpl,
wire.Bind(new(bulkAction.BulkUpdateService), new(*bulkAction.BulkUpdateServiceImpl)),
service.NewBulkUpdateServiceImpl,
wire.Bind(new(service.BulkUpdateService), new(*service.BulkUpdateServiceImpl)),

repository.NewImageTagRepository,
wire.Bind(new(repository.ImageTagRepository), new(*repository.ImageTagRepositoryImpl)),
Expand Down
6 changes: 3 additions & 3 deletions api/deployment/DeploymentConfigRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (handler *DeploymentConfigRestHandlerImpl) CreateChartFromFile(w http.Respo
}

token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionUpdate, "*"); !ok {
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*"); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
return
}
Expand Down Expand Up @@ -177,7 +177,7 @@ func (handler *DeploymentConfigRestHandlerImpl) SaveChart(w http.ResponseWriter,
}

token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionDelete, "*"); !ok {
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionCreate, "*"); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
return
}
Expand Down Expand Up @@ -234,7 +234,7 @@ func (handler *DeploymentConfigRestHandlerImpl) DownloadChart(w http.ResponseWri
}

token := r.Header.Get("token")
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionUpdate, "*"); !ok {
if ok := handler.enforcer.Enforce(token, casbin.ResourceGlobal, casbin.ActionGet, "*"); !ok {
common.WriteJsonResp(w, errors.New("unauthorized"), nil, http.StatusForbidden)
return
}
Expand Down
71 changes: 31 additions & 40 deletions api/restHandler/BulkUpdateRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ import (
"fmt"
"github.com/devtron-labs/devtron/pkg/build/git/gitMaterial/repository"
"github.com/devtron-labs/devtron/pkg/build/git/gitProvider"
"github.com/devtron-labs/devtron/pkg/bulkAction/bean"
"github.com/devtron-labs/devtron/pkg/bulkAction/service"
"github.com/devtron-labs/devtron/pkg/cluster/environment"
"net/http"
"strconv"
Expand All @@ -34,7 +36,6 @@ import (
"github.com/devtron-labs/devtron/pkg/appWorkflow"
"github.com/devtron-labs/devtron/pkg/auth/authorisation/casbin"
"github.com/devtron-labs/devtron/pkg/auth/user"
"github.com/devtron-labs/devtron/pkg/bulkAction"
"github.com/devtron-labs/devtron/pkg/chart"
"github.com/devtron-labs/devtron/pkg/pipeline"
"github.com/devtron-labs/devtron/pkg/team"
Expand All @@ -61,7 +62,7 @@ type BulkUpdateRestHandlerImpl struct {
ciPipelineRepository pipelineConfig.CiPipelineRepository
ciHandler pipeline.CiHandler
logger *zap.SugaredLogger
bulkUpdateService bulkAction.BulkUpdateService
bulkUpdateService service.BulkUpdateService
chartService chart.ChartService
propertiesConfigService pipeline.PropertiesConfigService
userAuthService user.UserService
Expand All @@ -81,7 +82,7 @@ type BulkUpdateRestHandlerImpl struct {
}

func NewBulkUpdateRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, logger *zap.SugaredLogger,
bulkUpdateService bulkAction.BulkUpdateService,
bulkUpdateService service.BulkUpdateService,
chartService chart.ChartService,
propertiesConfigService pipeline.PropertiesConfigService,
userAuthService user.UserService,
Expand Down Expand Up @@ -135,7 +136,7 @@ func (handler BulkUpdateRestHandlerImpl) FindBulkUpdateReadme(w http.ResponseWri
return
}
//auth free, only login required
var responseArr []*bulkAction.BulkUpdateSeeExampleResponse
var responseArr []*bean.BulkUpdateSeeExampleResponse
responseArr = append(responseArr, response)
common.WriteJsonResp(w, nil, responseArr, http.StatusOK)
}
Expand All @@ -157,7 +158,7 @@ func (handler BulkUpdateRestHandlerImpl) CheckAuthForImpactedObjects(AppId int,
}
func (handler BulkUpdateRestHandlerImpl) GetImpactedAppsName(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
var script bulkAction.BulkUpdateScript
var script bean.BulkUpdateScript
err := decoder.Decode(&script)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
Expand Down Expand Up @@ -212,7 +213,7 @@ func (handler BulkUpdateRestHandlerImpl) CheckAuthForBulkUpdate(AppId int, EnvId
}
func (handler BulkUpdateRestHandlerImpl) BulkUpdate(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
var script bulkAction.BulkUpdateScript
var script bean.BulkUpdateScript
err := decoder.Decode(&script)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
Expand Down Expand Up @@ -255,65 +256,55 @@ func (handler BulkUpdateRestHandlerImpl) BulkUpdate(w http.ResponseWriter, r *ht
}

func (handler BulkUpdateRestHandlerImpl) BulkHibernate(w http.ResponseWriter, r *http.Request) {
userId, err := handler.userAuthService.GetLoggedInUser(r)
if userId == 0 || err != nil {
common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized)
return
}
decoder := json.NewDecoder(r.Body)
var request bulkAction.BulkApplicationForEnvironmentPayload
err = decoder.Decode(&request)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
}
request.UserId = userId
err = handler.validator.Struct(request)
request, err := handler.decodeAndValidateBulkRequest(w, r)
if err != nil {
handler.logger.Errorw("validation err", "err", err, "request", request)
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
return // response already written by the helper on error.
}

token := r.Header.Get("token")
response, err := handler.bulkUpdateService.BulkHibernate(&request, r.Context(), w, token, handler.checkAuthForBulkHibernateAndUnhibernate)
response, err := handler.bulkUpdateService.BulkHibernate(request, r.Context(), w, token, handler.checkAuthForBulkHibernateAndUnhibernate)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}
common.WriteJsonResp(w, nil, response, http.StatusOK)
}

func (handler BulkUpdateRestHandlerImpl) BulkUnHibernate(w http.ResponseWriter, r *http.Request) {
// decodeAndValidateBulkRequest is a helper to decode and validate the request.
func (handler BulkUpdateRestHandlerImpl) decodeAndValidateBulkRequest(w http.ResponseWriter, r *http.Request) (*bean.BulkApplicationForEnvironmentPayload, error) {
userId, err := handler.userAuthService.GetLoggedInUser(r)
if userId == 0 || err != nil {
common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized)
return
return nil, err
}

decoder := json.NewDecoder(r.Body)
var request bulkAction.BulkApplicationForEnvironmentPayload
err = decoder.Decode(&request)
if err != nil {
var request bean.BulkApplicationForEnvironmentPayload
if err = decoder.Decode(&request); err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
return nil, err
}
request.UserId = userId
err = handler.validator.Struct(request)
if err != nil {
handler.logger.Errorw("validation err", "err", err, "request", request)
if err = handler.validator.Struct(request); err != nil {
handler.logger.Errorw("validation error", "request", request, "err", err)
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
return
return nil, err
}
return &request, nil
}

func (handler BulkUpdateRestHandlerImpl) BulkUnHibernate(w http.ResponseWriter, r *http.Request) {
request, err := handler.decodeAndValidateBulkRequest(w, r)
if err != nil {
return // response already written by the helper on error.
}
token := r.Header.Get("token")
response, err := handler.bulkUpdateService.BulkUnHibernate(&request, r.Context(), w, token, handler.checkAuthForBulkHibernateAndUnhibernate)
response, err := handler.bulkUpdateService.BulkUnHibernate(request, r.Context(), w, token, handler.checkAuthForBulkHibernateAndUnhibernate)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
return
}
common.WriteJsonResp(w, nil, response, http.StatusOK)
}

func (handler BulkUpdateRestHandlerImpl) BulkDeploy(w http.ResponseWriter, r *http.Request) {
token := r.Header.Get("token")
userId, err := handler.userAuthService.GetLoggedInUser(r)
Expand All @@ -322,7 +313,7 @@ func (handler BulkUpdateRestHandlerImpl) BulkDeploy(w http.ResponseWriter, r *ht
return
}
decoder := json.NewDecoder(r.Body)
var request bulkAction.BulkApplicationForEnvironmentPayload
var request bean.BulkApplicationForEnvironmentPayload
err = decoder.Decode(&request)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
Expand Down Expand Up @@ -350,7 +341,7 @@ func (handler BulkUpdateRestHandlerImpl) BulkBuildTrigger(w http.ResponseWriter,
return
}
decoder := json.NewDecoder(r.Body)
var request bulkAction.BulkApplicationForEnvironmentPayload
var request bean.BulkApplicationForEnvironmentPayload
err = decoder.Decode(&request)
if err != nil {
common.WriteJsonResp(w, err, nil, http.StatusBadRequest)
Expand Down Expand Up @@ -399,7 +390,7 @@ func (handler BulkUpdateRestHandlerImpl) HandleCdPipelineBulkAction(w http.Respo
common.WriteJsonResp(w, err, "Unauthorized User", http.StatusUnauthorized)
return
}
var cdPipelineBulkActionReq bulkAction.CdBulkActionRequestDto
var cdPipelineBulkActionReq bean.CdBulkActionRequestDto
err = decoder.Decode(&cdPipelineBulkActionReq)
cdPipelineBulkActionReq.UserId = userId
if err != nil {
Expand Down
4 changes: 1 addition & 3 deletions api/restHandler/ReleaseMetricsRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,10 @@ func (impl *ReleaseMetricsRestHandlerImpl) ResetDataForAllAppEnvironment(w http.
}
}

// err := decoder.Decode(&employeeStruct, r.URL.Query())
var decoder = schema.NewDecoder()

func (impl *ReleaseMetricsRestHandlerImpl) GetDeploymentMetrics(w http.ResponseWriter, r *http.Request) {
//decoder := json.NewDecoder(r.Body)
metricRequest := &lens.MetricRequest{}
decoder := schema.NewDecoder()
err := decoder.Decode(metricRequest, r.URL.Query())
if err != nil {
impl.logger.Errorw("request err, GetDeploymentMetrics", "err", err, "payload", metricRequest)
Expand Down
2 changes: 1 addition & 1 deletion pkg/bulkAction/bean.go → pkg/bulkAction/bean/bean.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package bulkAction
package bean

type NameIncludesExcludes struct {
Names []string `json:"names"`
Expand Down
Loading