Skip to content

Commit

Permalink
Add UpdateApplication to WebApi (#1228)
Browse files Browse the repository at this point in the history
**What this PR does / why we need it**:

**Which issue(s) this PR fixes**:

Fixes #1219 

**Does this PR introduce a user-facing change?**:
<!--
If no, just write "NONE" in the release-note block below.
-->
```release-note
NONE
```

This PR was merged by Kapetanios.
  • Loading branch information
khanhtc1202 committed Dec 10, 2020
1 parent 2900100 commit d7801ac
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 0 deletions.
44 changes: 44 additions & 0 deletions pkg/app/api/grpcapi/web_api.go
Expand Up @@ -403,6 +403,50 @@ func (a *WebAPI) AddApplication(ctx context.Context, req *webservice.AddApplicat
}, nil
}

func (a *WebAPI) UpdateApplication(ctx context.Context, req *webservice.UpdateApplicationRequest) (*webservice.UpdateApplicationResponse, error) {
claims, err := rpcauth.ExtractClaims(ctx)
if err != nil {
a.logger.Error("failed to authenticate the current user", zap.Error(err))
return nil, err
}

piped, err := getPiped(ctx, a.pipedStore, req.PipedId, a.logger)
if err != nil {
return nil, err
}

if piped.ProjectId != claims.Role.ProjectId {
return nil, status.Error(codes.InvalidArgument, "Requested piped does not belong to your project")
}

gitpath, err := makeGitPath(
req.GitPath.Repo.Id,
req.GitPath.Path,
req.GitPath.ConfigFilename,
piped,
a.logger,
)
if err != nil {
return nil, err
}

err = a.applicationStore.UpdateApplication(ctx, req.ApplicationId, func(app *model.Application) error {
app.Name = req.Name
app.EnvId = req.EnvId
app.PipedId = req.PipedId
app.GitPath = gitpath
app.Kind = req.Kind
app.CloudProvider = req.CloudProvider
return nil
})
if err != nil {
a.logger.Error("failed to update application", zap.Error(err))
return nil, status.Error(codes.Internal, "Failed to update application")
}

return &webservice.UpdateApplicationResponse{}, nil
}

func (a *WebAPI) EnableApplication(ctx context.Context, req *webservice.EnableApplicationRequest) (*webservice.EnableApplicationResponse, error) {
if err := a.updateApplicationEnable(ctx, req.ApplicationId, true); err != nil {
return nil, err
Expand Down
2 changes: 2 additions & 0 deletions pkg/app/api/service/webservice/service.pb.auth.go
Expand Up @@ -56,6 +56,8 @@ func (a *authorizer) Authorize(method string, r model.Role) bool {
return isAdmin(r)
case "/pipe.api.service.webservice.WebService/AddApplication":
return isAdmin(r)
case "/pipe.api.service.webservice.WebService/UpdateApplication":
return isAdmin(r)
case "/pipe.api.service.webservice.WebService/EnableApplication":
return isAdmin(r)
case "/pipe.api.service.webservice.WebService/DisableApplication":
Expand Down
14 changes: 14 additions & 0 deletions pkg/app/api/service/webservice/service.proto
Expand Up @@ -50,6 +50,7 @@ service WebService {

// Application
rpc AddApplication(AddApplicationRequest) returns (AddApplicationResponse) {}
rpc UpdateApplication(UpdateApplicationRequest) returns (UpdateApplicationResponse) {}
rpc EnableApplication(EnableApplicationRequest) returns (EnableApplicationResponse) {}
rpc DisableApplication(DisableApplicationRequest) returns (DisableApplicationResponse) {}
rpc ListApplications(ListApplicationsRequest) returns (ListApplicationsResponse) {}
Expand Down Expand Up @@ -179,6 +180,19 @@ message AddApplicationResponse {
string application_id = 1 [(validate.rules).string.min_len = 1];
}

message UpdateApplicationRequest {
string application_id = 1 [(validate.rules).string.min_len = 1];
string name = 2 [(validate.rules).string.min_len = 1];
string env_id = 3 [(validate.rules).string.min_len = 1];
string piped_id = 4 [(validate.rules).string.min_len = 1];
model.ApplicationGitPath git_path = 5 [(validate.rules).message.required = true];
model.ApplicationKind kind = 6 [(validate.rules).enum.defined_only = true];
string cloud_provider = 7 [(validate.rules).string.min_len = 1];
}

message UpdateApplicationResponse {
}

message EnableApplicationRequest {
string application_id = 1 [(validate.rules).string.min_len = 1];
}
Expand Down

0 comments on commit d7801ac

Please sign in to comment.