Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
iSulad-img
提交
f3fd7793
I
iSulad-img
项目概览
openeuler
/
iSulad-img
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
iSulad-img
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f3fd7793
编写于
5月 27, 2020
作者:
O
openeuler-ci-bot
提交者:
Gitee
5月 27, 2020
浏览文件
操作
浏览文件
下载
差异文件
!46 support import rootfs to be image
Merge pull request !46 from wangfengtu/support_import
上级
3266cec5
50e19128
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
484 addition
and
237 deletion
+484
-237
cmd/isulad_img/grpc.go
cmd/isulad_img/grpc.go
+14
-0
cmd/isulad_img/import.go
cmd/isulad_img/import.go
+81
-0
iSulad-img.spec
iSulad-img.spec
+1
-1
isula/isula_image.pb.go
isula/isula_image.pb.go
+375
-236
isula/isula_image.proto
isula/isula_image.proto
+13
-0
未找到文件。
cmd/isulad_img/grpc.go
浏览文件 @
f3fd7793
...
...
@@ -425,6 +425,20 @@ func (s *grpcImageService) LoadImage(ctx context.Context, req *pb.LoadImageReque
return
&
pb
.
LoadImageResponose
{
Outmsg
:
outmsg
},
err
}
// Import rootfs to be image
func
(
s
*
grpcImageService
)
Import
(
ctx
context
.
Context
,
req
*
pb
.
ImportRequest
)
(
*
pb
.
ImportResponose
,
error
)
{
id
,
err
:=
importImage
(
s
.
gopts
,
req
.
File
,
req
.
Tag
)
if
err
!=
nil
{
return
&
pb
.
ImportResponose
{
Id
:
id
,
Errmsg
:
err
.
Error
(),
Cc
:
1
,
},
err
}
return
&
pb
.
ImportResponose
{
Id
:
id
},
err
}
func
copyImageFsUsage
(
fsUsage
[]
*
FilesystemUsage
)
(
pbFsUsage
[]
*
pb
.
FilesystemUsage
)
{
for
_
,
usage
:=
range
fsUsage
{
element
:=
&
pb
.
FilesystemUsage
{
...
...
cmd/isulad_img/import.go
0 → 100644
浏览文件 @
f3fd7793
// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
// iSulad-img licensed under the Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
// http://license.coscl.org.cn/MulanPSL2
// 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 v2 for more details.
// Description: iSulad image kit
// Author: wangfengtu
// Create: 2020-05-25
package
main
import
(
"context"
"fmt"
"os"
"github.com/containers/image/copy"
"github.com/containers/image/storage"
"github.com/containers/image/transports/alltransports"
"github.com/containers/image/types"
)
func
importImage
(
gopts
*
globalOptions
,
input
string
,
destTag
string
)
(
string
,
error
)
{
if
input
==
""
{
return
""
,
fmt
.
Errorf
(
"Missing input tarball name"
)
}
imageService
,
err
:=
getImageService
(
gopts
)
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"get image service failed: %v"
,
err
)
}
policyContext
,
err
:=
getPolicyContext
(
gopts
)
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"Error loading trust policy: %v"
,
err
)
}
defer
policyContext
.
Destroy
()
store
,
err
:=
getStorageStore
(
gopts
)
if
err
!=
nil
{
return
""
,
err
}
// Make sure file exist, so we can make sure the following formated input always valid
_
,
err
=
os
.
Stat
(
input
)
if
err
!=
nil
{
return
""
,
err
}
// Format: tarball:/path/rootfs.tar
formatedInput
:=
"tarball:"
+
input
srcRef
,
err
:=
alltransports
.
ParseImageName
(
formatedInput
)
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"Invalid input name %s: %v"
,
formatedInput
,
err
)
}
destRef
,
err
:=
storage
.
Transport
.
ParseStoreReference
(
store
,
destTag
)
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"Invalid tag %s: %v"
,
destTag
,
err
)
}
_
,
err
=
copy
.
Image
(
context
.
Background
(),
policyContext
,
destRef
,
srcRef
,
&
copy
.
Options
{
ReportWriter
:
os
.
Stdout
,
})
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"Import rootfs %v failed: %v"
,
input
,
err
)
}
status
,
err
:=
imageService
.
GetOneImage
(
&
types
.
SystemContext
{},
destTag
)
if
err
!=
nil
{
return
""
,
err
}
fmt
.
Println
(
status
.
ID
)
return
status
.
ID
,
err
}
iSulad-img.spec
浏览文件 @
f3fd7793
%global _version 2.0.0
%global _release 20200
422.083956.git12ad23f0
%global _release 20200
527.141725.git98f65913
Name: iSulad-img
Version: %{_version}
Release: %{_release}
...
...
isula/isula_image.pb.go
浏览文件 @
f3fd7793
此差异已折叠。
点击以展开。
isula/isula_image.proto
浏览文件 @
f3fd7793
...
...
@@ -55,6 +55,8 @@ service ImageService {
rpc
ImageFsInfo
(
ImageFsInfoRequest
)
returns
(
ImageFsInfoResponse
)
{}
// Load image from file
rpc
LoadImage
(
LoadImageRequest
)
returns
(
LoadImageResponose
)
{}
// Import rootfs to be image
rpc
Import
(
ImportRequest
)
returns
(
ImportResponose
)
{}
// isulad image services
// get all Container rootfs
...
...
@@ -142,6 +144,17 @@ message LoadImageResponose {
uint32
cc
=
3
;
}
message
ImportRequest
{
string
file
=
1
;
string
tag
=
2
;
}
message
ImportResponose
{
string
id
=
1
;
string
errmsg
=
2
;
uint32
cc
=
3
;
}
message
GraphdriverStatusRequest
{}
message
GraphdriverStatusResponse
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录