Skip to content

Commit c83b0cb

Browse files
authored
Merge pull request #1300 from allencloud/deliminate-containerMeta
refactor: eliminate containerMeta in daemon manager
2 parents bd54a92 + 6920221 commit c83b0cb

23 files changed

+384
-415
lines changed

apis/server/container_bridge.go

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -60,35 +60,38 @@ func (s *Server) createContainer(ctx context.Context, rw http.ResponseWriter, re
6060
func (s *Server) getContainer(ctx context.Context, rw http.ResponseWriter, req *http.Request) error {
6161
name := mux.Vars(req)["name"]
6262

63-
meta, err := s.ContainerMgr.Get(ctx, name)
63+
c, err := s.ContainerMgr.Get(ctx, name)
6464
if err != nil {
6565
return err
6666
}
6767

68-
container := types.ContainerJSON{
69-
ID: meta.ID,
70-
Name: meta.Name,
71-
Image: meta.Config.Image,
72-
Created: meta.Created,
73-
State: meta.State,
74-
Config: meta.Config,
75-
HostConfig: meta.HostConfig,
76-
Snapshotter: meta.Snapshotter,
77-
GraphDriver: &types.GraphDriverData{
78-
Name: meta.Snapshotter.Name,
79-
Data: meta.Snapshotter.Data,
80-
},
68+
var netSettings *types.NetworkSettings
69+
if c.NetworkSettings != nil {
70+
netSettings = &types.NetworkSettings{
71+
Networks: c.NetworkSettings.Networks,
72+
}
8173
}
8274

83-
if meta.NetworkSettings != nil {
84-
container.NetworkSettings = &types.NetworkSettings{
85-
Networks: meta.NetworkSettings.Networks,
86-
}
75+
mounts := []types.MountPoint{}
76+
for _, mp := range c.Mounts {
77+
mounts = append(mounts, *mp)
8778
}
8879

89-
container.Mounts = []types.MountPoint{}
90-
for _, mp := range meta.Mounts {
91-
container.Mounts = append(container.Mounts, *mp)
80+
container := types.ContainerJSON{
81+
ID: c.ID,
82+
Name: c.Name,
83+
Image: c.Config.Image,
84+
Created: c.Created,
85+
State: c.State,
86+
Config: c.Config,
87+
HostConfig: c.HostConfig,
88+
Snapshotter: c.Snapshotter,
89+
GraphDriver: &types.GraphDriverData{
90+
Name: c.Snapshotter.Name,
91+
Data: c.Snapshotter.Data,
92+
},
93+
Mounts: mounts,
94+
NetworkSettings: netSettings,
9295
}
9396

9497
return EncodeResponse(rw, http.StatusOK, container)
@@ -99,44 +102,46 @@ func (s *Server) getContainers(ctx context.Context, rw http.ResponseWriter, req
99102
All: httputils.BoolValue(req, "all"),
100103
}
101104

102-
metas, err := s.ContainerMgr.List(ctx, func(meta *mgr.ContainerMeta) bool {
105+
cons, err := s.ContainerMgr.List(ctx, func(c *mgr.Container) bool {
103106
return true
104107
}, option)
105108
if err != nil {
106109
return err
107110
}
108111

109-
containerList := make([]types.Container, 0, len(metas))
112+
containerList := make([]types.Container, 0, len(cons))
110113

111-
for _, m := range metas {
112-
status, err := m.FormatStatus()
114+
for _, c := range cons {
115+
status, err := c.FormatStatus()
113116
if err != nil {
114117
return err
115118
}
116119

117-
t, err := time.Parse(utils.TimeLayout, m.Created)
120+
t, err := time.Parse(utils.TimeLayout, c.Created)
118121
if err != nil {
119122
return err
120123
}
121124

122-
container := types.Container{
123-
ID: m.ID,
124-
Names: []string{m.Name},
125-
Image: m.Config.Image,
126-
Command: strings.Join(m.Config.Cmd, " "),
127-
Status: status,
128-
Created: t.UnixNano(),
129-
Labels: m.Config.Labels,
130-
HostConfig: m.HostConfig,
125+
var netSettings *types.ContainerNetworkSettings
126+
if c.NetworkSettings != nil {
127+
netSettings = &types.ContainerNetworkSettings{
128+
Networks: c.NetworkSettings.Networks,
129+
}
131130
}
132131

133-
if m.NetworkSettings != nil {
134-
container.NetworkSettings = &types.ContainerNetworkSettings{
135-
Networks: m.NetworkSettings.Networks,
136-
}
132+
singleCon := types.Container{
133+
ID: c.ID,
134+
Names: []string{c.Name},
135+
Image: c.Config.Image,
136+
Command: strings.Join(c.Config.Cmd, " "),
137+
Status: status,
138+
Created: t.UnixNano(),
139+
Labels: c.Config.Labels,
140+
HostConfig: c.HostConfig,
141+
NetworkSettings: netSettings,
137142
}
138143

139-
containerList = append(containerList, container)
144+
containerList = append(containerList, singleCon)
140145
}
141146
return EncodeResponse(rw, http.StatusOK, containerList)
142147
}

apis/server/image_bridge.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ func (s *Server) removeImage(ctx context.Context, rw http.ResponseWriter, req *h
9898
return err
9999
}
100100

101-
containers, err := s.ContainerMgr.List(ctx, func(meta *mgr.ContainerMeta) bool {
102-
return meta.Image == image.ID
101+
containers, err := s.ContainerMgr.List(ctx, func(c *mgr.Container) bool {
102+
return c.Image == image.ID
103103
}, &mgr.ContainerListOption{All: true})
104104
if err != nil {
105105
return err

ctrd/container.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -349,12 +349,12 @@ func (c *Client) createContainer(ctx context.Context, ref, id string, container
349349
img, err := wrapperCli.client.GetImage(ctx, ref)
350350
if err != nil {
351351
if errdefs.IsNotFound(err) {
352-
return errors.Wrap(errtypes.ErrNotfound, "image")
352+
return errors.Wrapf(errtypes.ErrNotfound, "image %s", ref)
353353
}
354-
return errors.Wrapf(err, "failed to get image: %s", ref)
354+
return errors.Wrapf(err, "failed to get image %s", ref)
355355
}
356356

357-
logrus.Infof("success to get image: %s, container id: %s", img.Name(), id)
357+
logrus.Infof("success to get image %s, container id %s", img.Name(), id)
358358

359359
// create container
360360
specOptions := []oci.SpecOpts{
@@ -375,13 +375,13 @@ func (c *Client) createContainer(ctx context.Context, ref, id string, container
375375

376376
// check snapshot exist or not.
377377
if _, err := c.GetSnapshot(ctx, id); err != nil {
378-
return errors.Wrapf(err, "failed to create container, id: %s", id)
378+
return errors.Wrapf(err, "failed to create container %s", id)
379379
}
380380
options = append(options, containerd.WithSnapshot(id))
381381

382382
nc, err := wrapperCli.client.NewContainer(ctx, id, options...)
383383
if err != nil {
384-
return errors.Wrapf(err, "failed to create container, id: %s", id)
384+
return errors.Wrapf(err, "failed to create container %s", id)
385385
}
386386

387387
defer func() {

daemon/daemon.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func NewDaemon(cfg *config.Config) *Daemon {
5454
Buckets: []meta.Bucket{
5555
{
5656
Name: meta.MetaJSONFile,
57-
Type: reflect.TypeOf(mgr.ContainerMeta{}),
57+
Type: reflect.TypeOf(mgr.Container{}),
5858
},
5959
},
6060
})

0 commit comments

Comments
 (0)