Skip to content

Commit

Permalink
new feature (#50)
Browse files Browse the repository at this point in the history
* test

* new feature : support batch delete services

* 更新yaml文件
  • Loading branch information
jakcyzhou authored and asifdxtreme committed Aug 11, 2017
1 parent 57d85a0 commit baa3edf
Show file tree
Hide file tree
Showing 7 changed files with 708 additions and 263 deletions.
490 changes: 304 additions & 186 deletions server/core/proto/services.pb.go

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions server/core/proto/services.proto
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ service ServiceCtrl {
rpc createDependenciesForMircServices (CreateDependenciesRequest) returns (CreateDependenciesResponse);
rpc getProviderDependencies (GetDependenciesRequest) returns (GetProDependenciesResponse);
rpc getConsumerDependencies (GetDependenciesRequest) returns (GetConDependenciesResponse);
rpc deleteServices (DelServicesRequest) returns (DelServicesResponse);
}

service ServiceInstanceCtrl {
Expand Down Expand Up @@ -506,3 +507,23 @@ message GetServiceDetailResponse {
Response response = 1;
ServiceDetail service = 2;
}



//删除服务请求
message DelServicesRequest {
repeated string serviceIds = 1;
bool force = 2;
}
//删除服务响应内容
message DelServicesRspInfo {
string errMessage = 1;
string serviceId = 2;
}

//删除服务响应
message DelServicesResponse {
Response response = 1;
repeated DelServicesRspInfo services = 2;
}

53 changes: 53 additions & 0 deletions server/core/swagger/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,30 @@ paths:
description: 内部错误
schema:
type: string
delete:
description: |
批量删除指定的微服务定义及其相关信息,同时注销其所有实例信息。
operationId: deleteServices
parameters:
- name: serviceIds
in: body
description: 批量删除服务的服务ID列表
required: true
schema:
$ref: '#/definitions/DelServicesRequest'
tags:
- microservices
responses:
200:
description: 更新成功
400:
description: 错误的请求
schema:
$ref: '#/definitions/DelServicesResponse'
500:
description: 内部错误
schema:
type: string
/registry/v3/microservices/{serviceId}/properties:
put:
description: |
Expand Down Expand Up @@ -1569,6 +1593,35 @@ definitions:
instanceId:
description: 微服务实例id
type: string
errMessage:
description: 错误信息,成功为空,不成功,则为错误,在部分成功的场景使用
type: string

DelServicesRequest:
type: object
properties:
serviceIds:
type: array
items:
type: string
force:
description: 不传即默认为false。 强制删除,则与该服务相关的信息删除,非强制删除: 如果作为该被依赖(作为provider,提供服务,且不是只存在自依赖)或者存在实例,则不能删除,其它均删除。
type: string

DelServicesResponse:
type: object
properties:
services:
type: array
items:
$ref: "#/definitions/DelServicesRspInfo"

DelServicesRspInfo:
type: object
properties:
serviceId:
description: 微服务id
type: string
errMessage:
description: 错误信息,成功为空,不成功,则为错误,在部分成功的场景使用
type: string
39 changes: 39 additions & 0 deletions server/rest/microservice_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ func (this *MicroServiceService) URLPatterns() []rest.Route {
{rest.HTTP_METHOD_PUT, "/registry/v3/dependencies", this.CreateDependenciesForMicroServices},
{rest.HTTP_METHOD_GET, "/registry/v3/microservices/:consumerId/providers", this.GetConProDependencies},
{rest.HTTP_METHOD_GET, "/registry/v3/microservices/:providerId/consumers", this.GetProConDependencies},
{rest.HTTP_METHOD_DELETE, "/registry/v3/microservices", this.UnregisterServices},
}
}

Expand Down Expand Up @@ -278,3 +279,41 @@ func (this *MicroServiceService) GetProConDependencies(w http.ResponseWriter, r
resp.Response = nil
WriteJsonObject(http.StatusOK, resp, w)
}

func (this *MicroServiceService) UnregisterServices(w http.ResponseWriter, r *http.Request) {
request_body,err := ioutil.ReadAll(r.Body)
if err != nil{
util.LOGGER.Error("body ,err",err)
WriteText(http.StatusBadRequest, err.Error(), w)
return
}

request := &pb.DelServicesRequest{}

err = json.Unmarshal(request_body, request)
if err != nil {
util.LOGGER.Error("unmarshal ,err ", err)
WriteText(http.StatusBadRequest, err.Error(), w)
return
}

resp, err := ServiceAPI.DeleteServices(r.Context(), request)

if resp.Response.Code == pb.Response_SUCCESS {
WriteText(http.StatusOK, "", w)
return
}
if resp.Services == nil || len(resp.Services) == 0 {
WriteText(http.StatusBadRequest, resp.Response.Message, w)
return
}
resp.Response = nil
objJson, err := json.Marshal(resp)
if err != nil {
WriteText(http.StatusInternalServerError, err.Error(), w)
return
}
WriteJson(http.StatusBadRequest, objJson, w)
return
}

Loading

0 comments on commit baa3edf

Please sign in to comment.