Skip to content

Commit ac19e39

Browse files
anrsanrs
anrs
authored andcommitted
feat: building image with username.
1 parent ee6077f commit ac19e39

File tree

11 files changed

+27
-31
lines changed

11 files changed

+27
-31
lines changed

cluster/calcium/build.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func (c *Calcium) BuildImage(ctx context.Context, opts *types.BuildOptions) (ch
3838
case types.BuildFromRaw:
3939
ch, err = c.buildFromContent(ctx, node, refs, opts.Tar)
4040
case types.BuildFromExist:
41-
ch, err = c.buildFromExist(ctx, refs[0], opts.ExistID)
41+
ch, err = c.buildFromExist(ctx, refs[0], opts.ExistID, opts.User)
4242
default:
4343
return nil, logger.Err(ctx, errors.WithStack(errors.New("unknown build type")))
4444
}
@@ -89,7 +89,7 @@ func (c *Calcium) buildFromContent(ctx context.Context, node *types.Node, refs [
8989
return ch, err
9090
}
9191

92-
func (c *Calcium) buildFromExist(ctx context.Context, ref, existID string) (chan *types.BuildImageMessage, error) { // nolint:unparam
92+
func (c *Calcium) buildFromExist(ctx context.Context, ref, existID, user string) (chan *types.BuildImageMessage, error) { // nolint:unparam
9393
logger := log.WithField("Calcium", "buildFromExist").WithField("ref", ref).WithField("existID", existID)
9494
return withImageBuiltChannel(func(ch chan *types.BuildImageMessage) {
9595
node, err := c.getWorkloadNode(ctx, existID)
@@ -98,7 +98,7 @@ func (c *Calcium) buildFromExist(ctx context.Context, ref, existID string) (chan
9898
return
9999
}
100100

101-
imageID, err := node.Engine.ImageBuildFromExist(ctx, existID, ref)
101+
imageID, err := node.Engine.ImageBuildFromExist(ctx, existID, ref, user)
102102
if err != nil {
103103
ch <- buildErrMsg(logger.Err(ctx, err))
104104
return

cluster/calcium/build_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func TestBuild(t *testing.T) {
121121
// build from exist not implemented
122122
opts.BuildMethod = types.BuildFromExist
123123
opts.ExistID = "123"
124-
engine.On("ImageBuildFromExist", mock.Anything, mock.Anything, mock.Anything).Return("", types.ErrEngineNotImplemented).Once()
124+
engine.On("ImageBuildFromExist", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return("", types.ErrEngineNotImplemented).Once()
125125
store.On("GetWorkload", mock.Anything, mock.Anything).Return(&types.Workload{Nodename: "123"}, nil)
126126
store.On("GetNode", mock.Anything, mock.Anything).Return(&types.Node{Engine: engine}, nil)
127127
ch, err = c.BuildImage(ctx, opts)

engine/docker/image.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ func (e *Engine) ImageBuild(ctx context.Context, input io.Reader, refs []string)
118118
}
119119

120120
// ImageBuildFromExist commits image from running workload
121-
func (e *Engine) ImageBuildFromExist(ctx context.Context, ID, name string) (imageID string, err error) {
121+
func (e *Engine) ImageBuildFromExist(ctx context.Context, ID, name, _ string) (imageID string, err error) {
122122
opts := dockertypes.ContainerCommitOptions{
123123
Reference: name,
124124
Author: "eru-core",

engine/engine.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type API interface {
3030
ImageBuildCachePrune(ctx context.Context, all bool) (uint64, error)
3131
ImageLocalDigests(ctx context.Context, image string) ([]string, error)
3232
ImageRemoteDigest(ctx context.Context, image string) (string, error)
33-
ImageBuildFromExist(ctx context.Context, ID, name string) (string, error)
33+
ImageBuildFromExist(ctx context.Context, ID, name, user string) (string, error)
3434

3535
BuildRefs(ctx context.Context, name string, tags []string) []string
3636
BuildContent(ctx context.Context, scm coresource.Source, opts *enginetypes.BuildContentOptions) (string, io.Reader, error)

engine/mocks/API.go

+8-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

engine/systemd/image.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func (s *SSHClient) ImageBuild(ctx context.Context, input io.Reader, refs []stri
4545
}
4646

4747
// ImageBuildFromExist won't work for systemd engine
48-
func (s *SSHClient) ImageBuildFromExist(ctx context.Context, ID, name string) (imageID string, err error) {
48+
func (s *SSHClient) ImageBuildFromExist(ctx context.Context, ID, name, user string) (imageID string, err error) {
4949
err = types.ErrEngineNotImplemented
5050
return
5151
}

engine/virt/image.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88

99
"github.com/projecteru2/core/log"
10+
"github.com/projecteru2/core/types"
1011

1112
enginetypes "github.com/projecteru2/core/engine/types"
1213

@@ -49,7 +50,11 @@ func (v *Virt) ImageBuild(ctx context.Context, input io.Reader, refs []string) (
4950
}
5051

5152
// ImageBuildFromExist builds vm image from running vm
52-
func (v *Virt) ImageBuildFromExist(ctx context.Context, ID, name string) (string, error) {
53+
func (v *Virt) ImageBuildFromExist(ctx context.Context, ID, name, user string) (string, error) {
54+
if len(user) < 1 {
55+
return "", types.ErrNoImageUser
56+
}
57+
5358
// TODO: removes below 2 lines
5459
// upper layer may remove 'hub.docker.io/...../<name>' prefix and tag from the name.
5560
// due to the domain and tag both are docker concepts.
@@ -58,7 +63,7 @@ func (v *Virt) ImageBuildFromExist(ctx context.Context, ID, name string) (string
5863
// Removes tag (latest by default)
5964
name = strings.Split(name, ":")[0]
6065

61-
req := virttypes.CaptureGuestReq{Name: name}
66+
req := virttypes.CaptureGuestReq{Name: name, User: user}
6267
req.ID = ID
6368

6469
uimg, err := v.client.CaptureGuest(ctx, req)

engine/virt/virt.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (v *Virt) VirtualizationCreate(ctx context.Context, opts *enginetypes.Virtu
159159
CPU: int(opts.Quota),
160160
Mem: opts.Memory,
161161
ImageName: opts.Image,
162-
ImageUser: opts.User,
162+
ImageUser: opts.Labels[ImageUserKey],
163163
Volumes: vols,
164164
Labels: opts.Labels,
165165
AncestorID: opts.AncestorWorkloadID,

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ require (
3434
github.com/opencontainers/runc v0.1.1 // indirect
3535
github.com/patrickmn/go-cache v2.1.0+incompatible
3636
github.com/pkg/errors v0.9.1
37-
github.com/projecteru2/libyavirt v0.0.0-20210506084619-9ba72c7c2ae3
37+
github.com/projecteru2/libyavirt v0.0.0-20210510090553-13d6d50dae11
3838
github.com/prometheus/client_golang v1.7.1
3939
github.com/sanity-io/litter v1.3.0
4040
github.com/sethvargo/go-signalcontext v0.1.0

go.sum

+2-12
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn
5757
github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg=
5858
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
5959
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
60-
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
6160
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
6261
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
6362
github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk=
@@ -118,7 +117,6 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3
118117
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
119118
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
120119
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
121-
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
122120
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
123121
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
124122
github.com/etcd-io/gofail v0.0.0-20190801230047-ad7f989257ca/go.mod h1:49H/RkXP8pKaZy4h0d+NW16rSLhyVBt4o6VLJbmOqDE=
@@ -204,8 +202,6 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI
204202
github.com/google/pprof v0.0.0-20190908185732-236ed259b199/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
205203
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
206204
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
207-
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
208-
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
209205
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
210206
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
211207
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
@@ -352,11 +348,10 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
352348
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
353349
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
354350
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
355-
github.com/projecteru2/libyavirt v0.0.0-20201204100854-3646a3f5f5e5/go.mod h1:9/SNmdphwl12ubwihkRa9YtOozM6liYLDxsricra1mY=
356-
github.com/projecteru2/libyavirt v0.0.0-20210430061544-6e7bba9e434a h1:YGrEgfjitY8LV6WGGpNhgpUwhbCin2feTYFWa8DvL0s=
357-
github.com/projecteru2/libyavirt v0.0.0-20210430061544-6e7bba9e434a/go.mod h1:9/SNmdphwl12ubwihkRa9YtOozM6liYLDxsricra1mY=
358351
github.com/projecteru2/libyavirt v0.0.0-20210506084619-9ba72c7c2ae3 h1:HPjZPr0PcaHJ0KQ/xzyZbL1p8xuRwIDHWGlgfUSvVEU=
359352
github.com/projecteru2/libyavirt v0.0.0-20210506084619-9ba72c7c2ae3/go.mod h1:9/SNmdphwl12ubwihkRa9YtOozM6liYLDxsricra1mY=
353+
github.com/projecteru2/libyavirt v0.0.0-20210510090553-13d6d50dae11 h1:tq7Z0y1WyCNZMGnia8buu5Ju1ktFhQ3m0Zp+BFB+m3I=
354+
github.com/projecteru2/libyavirt v0.0.0-20210510090553-13d6d50dae11/go.mod h1:9/SNmdphwl12ubwihkRa9YtOozM6liYLDxsricra1mY=
360355
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
361356
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
362357
github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
@@ -423,7 +418,6 @@ github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRci
423418
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
424419
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
425420
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
426-
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
427421
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
428422
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
429423
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -668,7 +662,6 @@ google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRn
668662
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
669663
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
670664
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
671-
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U=
672665
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
673666
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
674667
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
@@ -683,15 +676,12 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
683676
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
684677
google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4=
685678
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
686-
google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c=
687-
google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
688679
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
689680
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
690681
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
691682
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
692683
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
693684
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
694-
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
695685
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
696686
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
697687
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=

types/errors.go

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ var (
5454
ErrNotFitLabels = errors.New("not fit labels")
5555

5656
ErrNoImage = errors.New("no image")
57+
ErrNoImageUser = errors.New("no image user")
5758
ErrNoBuildPod = errors.New("No build pod set in config")
5859
ErrNoBuildsInSpec = errors.New("No builds in spec")
5960
ErrNoBuildSpec = errors.New("No build spec")

0 commit comments

Comments
 (0)