提交 d9385f29 编写于 作者: W WangFengTu

Support inspect graph driver's metadata

Signed-off-by: NWangFengTu <wangfengtu@huawei.com>
上级 da471a3f
......@@ -261,12 +261,12 @@ func (s *grpcImageService) ListImages(ctx context.Context, req *pb.ListImagesReq
resp := &pb.ListImagesResponse{}
for _, img := range images.Images {
respImg, err := transImageToPBImage(img)
if err != nil {
respImg, err2 := transImageToPBImage(img)
if err2 != nil {
return &pb.ListImagesResponse{
Errmsg: err.Error(),
Errmsg: err2.Error(),
Cc: 1,
}, err
}, err2
}
resp.Images = append(resp.Images, respImg)
......@@ -637,6 +637,30 @@ func (s *grpcImageService) GraphdriverStatus(ctx context.Context, req *pb.Graphd
return resp, nil
}
// get metadata of graphdriver
func (s *grpcImageService) GraphdriverMetadata(ctx context.Context, req *pb.GraphdriverMetadataRequest) (*pb.GraphdriverMetadataResponse, error) {
var err error
if req == nil || req.NameId == "" {
err = errors.New("Lack infomation for driver metadata")
return &pb.GraphdriverMetadataResponse{
Errmsg: err.Error(),
Cc: 1,
}, err
}
resp := &pb.GraphdriverMetadataResponse{}
resp.Metadata, resp.Name, err = storageMetadata(s.gopts, req.NameId)
if err != nil {
return &pb.GraphdriverMetadataResponse{
Errmsg: err.Error(),
Cc: 1,
}, err
}
return resp, nil
}
// login registry
func (s *grpcImageService) Login(ctx context.Context, req *pb.LoginRequest) (*pb.LoginResponse, error) {
if req == nil || req.Server == "" || req.Username == "" || req.Password == "" {
......
// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
// iSulad-img licensed under the Mulan PSL v1.
// You can use this software according to the terms and conditions of the Mulan PSL v1.
// You may obtain a copy of Mulan PSL v1 at:
// http://license.coscl.org.cn/MulanPSL
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
// PURPOSE.
// See the Mulan PSL v1 for more details.
// Description: iSulad image kit
// Author: wangfengtu
// Create: 2020-03-20
package main
import "fmt"
func storageMetadata(gopts *globalOptions, nameID string) (metadata map[string]string, name string, err error) {
imageService, err := getImageService(gopts)
if err != nil {
return nil, "", fmt.Errorf("failed to get image service: %v", err)
}
runtimeService := getRuntimeService("", imageService)
if runtimeService == nil {
return nil, "", fmt.Errorf("failed to get runtime service: %v", err)
}
layerID, err := runtimeService.GetContainerLayerID(nameID)
if err != nil {
return nil, "", fmt.Errorf("failed to get container layer id by %v: %v", nameID, err)
}
store, err := getStorageStore(gopts)
if err != nil {
return nil, "", err
}
driver, err := store.GraphDriver()
if err != nil {
return nil, "", err
}
metadata, err = driver.Metadata(layerID)
if err != nil {
return nil, "", err
}
return metadata, driver.String(), err
}
此差异已折叠。
......@@ -76,6 +76,9 @@ service ImageService {
// get status of graphdriver
rpc GraphdriverStatus(GraphdriverStatusRequest) returns (GraphdriverStatusResponse) {}
// get metadata of graphdriver
rpc GraphdriverMetadata(GraphdriverMetadataRequest) returns (GraphdriverMetadataResponse) {}
// login registry
rpc Login(LoginRequest) returns (LoginResponse) {}
// logout registry
......@@ -144,6 +147,17 @@ message GraphdriverStatusResponse {
uint32 cc = 3;
}
message GraphdriverMetadataRequest {
string name_id = 1;
}
message GraphdriverMetadataResponse {
map<string,string> metadata = 1;
string name = 2;
string errmsg = 3;
uint32 cc = 4;
}
message ContainerFsUsageRequest {
string name_id = 1;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册