aseTo2016 commented on a change in pull request #1257:
URL:
https://github.com/apache/servicecomb-service-center/pull/1257#discussion_r804350665
##########
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) {
+ resp, err := discosvc.FindService(ctx, key)
+ if err != nil {
+ return nil, err
+ }
+ var versions []string
Review comment:
建议versions := make([]string, 0, resp.Services)
##########
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:
discosvc.FindService,会查出所有版本,45行的service, err :=
discosvc.GetService(ctx,
in)也会拿出对应service,是不是直接从FindService里面过滤出来service就行了,不用单独一次获取discosvc.GetService
--
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]