little-cui commented on a change in pull request #1257:
URL: 
https://github.com/apache/servicecomb-service-center/pull/1257#discussion_r804379605



##########
File path: server/service/govern/view.go
##########
@@ -34,11 +37,81 @@ func ListServiceDetail(ctx context.Context, in 
*pb.GetServicesInfoRequest) (*pb.
 func GetServiceDetail(ctx context.Context, in *pb.GetServiceRequest) 
(*pb.ServiceDetail, error) {
        ctx = util.WithCacheOnly(ctx)
 
-       if len(in.ServiceId) == 0 {
+       serviceID := in.ServiceId
+       if len(serviceID) == 0 {
                return nil, pb.NewError(pb.ErrInvalidParams, "Invalid request 
for getting service detail.")
        }
 
-       return datasource.GetMetadataManager().GetServiceDetail(ctx, in)
+       service, err := discosvc.GetService(ctx, in)
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s] failed", serviceID), err)
+               return nil, err
+       }
+
+       serviceInfo := new(pb.ServiceDetail)
+       serviceInfo.MicroService = service
+
+       key := &pb.MicroServiceKey{
+               Environment: service.Environment,
+               AppId:       service.AppId,
+               ServiceName: service.ServiceName,
+       }
+       versions, err := getServiceAllVersions(ctx, key)
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s/%s/%s] all versions 
failed",
+                       service.Environment, service.AppId, 
service.ServiceName), err)
+               return nil, pb.NewError(pb.ErrInternal, err.Error())
+       }
+       serviceInfo.MicroServiceVersions = versions
+
+       tagsResp, err := discosvc.ListTag(ctx, 
&pb.GetServiceTagsRequest{ServiceId: serviceID})
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s] tags failed", 
serviceID), err)
+               return nil, err
+       }
+       serviceInfo.Tags = tagsResp.Tags
+
+       schemas, err := discosvc.ListSchema(ctx, 
&pb.GetAllSchemaRequest{ServiceId: serviceID, WithSchema: true})
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s] schemas failed", 
serviceID), err)
+               return nil, err
+       }
+       serviceInfo.SchemaInfos = schemas
+
+       providerResp, err := discosvc.ListProviders(ctx, 
&pb.GetDependenciesRequest{ServiceId: serviceID})
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s] providers failed", 
serviceID), err)
+               return nil, err
+       }
+       serviceInfo.Providers = providerResp.Providers
+
+       consumerResp, err := discosvc.ListConsumers(ctx, 
&pb.GetDependenciesRequest{ServiceId: serviceID})
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s] consumers failed", 
serviceID), err)
+               return nil, err
+       }
+       serviceInfo.Consumers = consumerResp.Consumers
+
+       instResp, err := discosvc.ListInstance(ctx, 
&pb.GetInstancesRequest{ProviderServiceId: serviceID})
+       if err != nil {
+               log.Error(fmt.Sprintf("get service[%s] instances failed", 
serviceID), err)
+               return nil, err
+       }
+       serviceInfo.Instances = instResp.Instances
+
+       return serviceInfo, nil
+}
+
+func getServiceAllVersions(ctx context.Context, key *pb.MicroServiceKey) 
([]string, error) {

Review comment:
       第一次是主要作用是:
   1. 为了获取服务的名字/环境/应用等信息
   2. 确认serviceID是否存在




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to