You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							106 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							106 lines
						
					
					
						
							3.4 KiB
						
					
					
				| package weed_server | |
| 
 | |
| import ( | |
| 	"context" | |
| 	"fmt" | |
| 	"github.com/seaweedfs/seaweedfs/weed/util/version" | |
| 	"time" | |
| 
 | |
| 	"github.com/seaweedfs/seaweedfs/weed/cluster" | |
| 	"github.com/seaweedfs/seaweedfs/weed/glog" | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb" | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb/master_pb" | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" | |
| ) | |
| 
 | |
| func (fs *FilerServer) Statistics(ctx context.Context, req *filer_pb.StatisticsRequest) (resp *filer_pb.StatisticsResponse, err error) { | |
| 
 | |
| 	var output *master_pb.StatisticsResponse | |
| 
 | |
| 	err = fs.filer.MasterClient.WithClient(false, func(masterClient master_pb.SeaweedClient) error { | |
| 		grpcResponse, grpcErr := masterClient.Statistics(context.Background(), &master_pb.StatisticsRequest{ | |
| 			Replication: req.Replication, | |
| 			Collection:  req.Collection, | |
| 			Ttl:         req.Ttl, | |
| 			DiskType:    req.DiskType, | |
| 		}) | |
| 		if grpcErr != nil { | |
| 			return grpcErr | |
| 		} | |
| 
 | |
| 		output = grpcResponse | |
| 		return nil | |
| 	}) | |
| 
 | |
| 	if err != nil { | |
| 		return nil, err | |
| 	} | |
| 
 | |
| 	return &filer_pb.StatisticsResponse{ | |
| 		TotalSize: output.TotalSize, | |
| 		UsedSize:  output.UsedSize, | |
| 		FileCount: output.FileCount, | |
| 	}, nil | |
| } | |
| 
 | |
| func (fs *FilerServer) Ping(ctx context.Context, req *filer_pb.PingRequest) (resp *filer_pb.PingResponse, pingErr error) { | |
| 	resp = &filer_pb.PingResponse{ | |
| 		StartTimeNs: time.Now().UnixNano(), | |
| 	} | |
| 	if req.TargetType == cluster.FilerType { | |
| 		pingErr = pb.WithFilerClient(false, 0, pb.ServerAddress(req.Target), fs.grpcDialOption, func(client filer_pb.SeaweedFilerClient) error { | |
| 			pingResp, err := client.Ping(ctx, &filer_pb.PingRequest{}) | |
| 			if pingResp != nil { | |
| 				resp.RemoteTimeNs = pingResp.StartTimeNs | |
| 			} | |
| 			return err | |
| 		}) | |
| 	} | |
| 	if req.TargetType == cluster.VolumeServerType { | |
| 		pingErr = pb.WithVolumeServerClient(false, pb.ServerAddress(req.Target), fs.grpcDialOption, func(client volume_server_pb.VolumeServerClient) error { | |
| 			pingResp, err := client.Ping(ctx, &volume_server_pb.PingRequest{}) | |
| 			if pingResp != nil { | |
| 				resp.RemoteTimeNs = pingResp.StartTimeNs | |
| 			} | |
| 			return err | |
| 		}) | |
| 	} | |
| 	if req.TargetType == cluster.MasterType { | |
| 		pingErr = pb.WithMasterClient(false, pb.ServerAddress(req.Target), fs.grpcDialOption, false, func(client master_pb.SeaweedClient) error { | |
| 			pingResp, err := client.Ping(ctx, &master_pb.PingRequest{}) | |
| 			if pingResp != nil { | |
| 				resp.RemoteTimeNs = pingResp.StartTimeNs | |
| 			} | |
| 			return err | |
| 		}) | |
| 	} | |
| 	if pingErr != nil { | |
| 		pingErr = fmt.Errorf("ping %s %s: %v", req.TargetType, req.Target, pingErr) | |
| 	} | |
| 	resp.StopTimeNs = time.Now().UnixNano() | |
| 	return | |
| } | |
| 
 | |
| func (fs *FilerServer) GetFilerConfiguration(ctx context.Context, req *filer_pb.GetFilerConfigurationRequest) (resp *filer_pb.GetFilerConfigurationResponse, err error) { | |
| 
 | |
| 	t := &filer_pb.GetFilerConfigurationResponse{ | |
| 		Masters:            fs.option.Masters.GetInstancesAsStrings(), | |
| 		Collection:         fs.option.Collection, | |
| 		Replication:        fs.option.DefaultReplication, | |
| 		MaxMb:              uint32(fs.option.MaxMB), | |
| 		DirBuckets:         fs.filer.DirBucketsPath, | |
| 		Cipher:             fs.filer.Cipher, | |
| 		Signature:          fs.filer.Signature, | |
| 		MetricsAddress:     fs.metricsAddress, | |
| 		MetricsIntervalSec: int32(fs.metricsIntervalSec), | |
| 		Version:            version.Version(), | |
| 		FilerGroup:         fs.option.FilerGroup, | |
| 		MajorVersion:       version.MAJOR_VERSION, | |
| 		MinorVersion:       version.MINOR_VERSION, | |
| 	} | |
| 
 | |
| 	glog.V(4).InfofCtx(ctx, "GetFilerConfiguration: %v", t) | |
| 
 | |
| 	return t, nil | |
| }
 |