Skip to content

Commit

Permalink
use label filter containers
Browse files Browse the repository at this point in the history
  • Loading branch information
CMGS committed Sep 3, 2018
1 parent 0790cd7 commit 6947791
Show file tree
Hide file tree
Showing 13 changed files with 724 additions and 412 deletions.
2 changes: 1 addition & 1 deletion cluster/calcium/create_container.go
Expand Up @@ -247,7 +247,7 @@ func (c *Calcium) makeContainerOptions(index int, quota types.CPUMap, opts *type
// basic labels, and set meta in opts to labels
containerLabels := map[string]string{
cluster.ERUMark: "1",
cluster.ERUMeta: utils.EncodeMetaInLabel(&types.EruContainerMeta{
cluster.ERUMeta: utils.EncodeMetaInLabel(&types.ContainerMeta{
Publish: opts.Entrypoint.Publish,
HealthCheck: entry.HealthCheck,
}),
Expand Down
33 changes: 30 additions & 3 deletions cluster/calcium/meta.go
Expand Up @@ -7,6 +7,7 @@ import (
"context"

"github.com/projecteru2/core/types"
"github.com/projecteru2/core/utils"
log "github.com/sirupsen/logrus"
)

Expand Down Expand Up @@ -57,8 +58,25 @@ func (c *Calcium) ListPodNodes(ctx context.Context, podname string, all bool) ([
}

// ListContainers list containers
func (c *Calcium) ListContainers(ctx context.Context, appname, entrypoint, nodename string) ([]*types.Container, error) {
return c.store.ListContainers(ctx, appname, entrypoint, nodename)
func (c *Calcium) ListContainers(ctx context.Context, opts *types.ListContainersOptions) ([]*types.Container, error) {
cs, err := c.store.ListContainers(ctx, opts.Appname, opts.Entrypoint, opts.Nodename)
if err != nil {
log.Debugf("[ListContainers] Error during get containers %v", err)
return cs, err
}
result := []*types.Container{}
for i, c := range cs {
cs[i].RawInspect, err = c.Inspect(ctx)
if err != nil {
log.Errorf("[ListContainers] Error during inspect container %s %v", c.ID, err)
continue
}
if !utils.FilterContainer(cs[i].RawInspect.Config.Labels, opts.Labels) {
continue
}
result = append(result, cs[i])
}
return result, nil
}

// ListNodeContainers list containers belong to one node
Expand All @@ -78,7 +96,16 @@ func (c *Calcium) GetNode(ctx context.Context, podname, nodename string) (*types

// GetContainer get a container
func (c *Calcium) GetContainer(ctx context.Context, ID string) (*types.Container, error) {
return c.store.GetContainer(ctx, ID)
container, err := c.store.GetContainer(ctx, ID)
if err != nil {
return nil, err
}
rawInspect, err := container.Inspect(ctx)
if err != nil {
return nil, err
}
container.RawInspect = rawInspect
return container, nil
}

// GetContainers get containers
Expand Down
8 changes: 5 additions & 3 deletions cluster/calcium/replace_container.go
Expand Up @@ -11,8 +11,10 @@ import (
)

// ReplaceContainer replace containers with same resource
func (c *Calcium) ReplaceContainer(ctx context.Context, opts *types.DeployOptions, force bool) (chan *types.ReplaceContainerMessage, error) {
oldContainers, err := c.ListContainers(ctx, opts.Name, opts.Entrypoint.Name, opts.Nodename)
func (c *Calcium) ReplaceContainer(ctx context.Context, opts *types.DeployOptions, replaceOpts *types.ReplaceOptions) (chan *types.ReplaceContainerMessage, error) {
oldContainers, err := c.ListContainers(ctx, &types.ListContainersOptions{
Appname: opts.Name, Entrypoint: opts.Entrypoint.Name, Nodename: opts.Nodename, Labels: replaceOpts.FilterLabels,
})
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -40,7 +42,7 @@ func (c *Calcium) ReplaceContainer(ctx context.Context, opts *types.DeployOption
deployOpts.CPUQuota = oldContainer.Quota
deployOpts.SoftLimit = oldContainer.SoftLimit

createMessage, removeMessage, err := c.doReplaceContainer(ctx, oldContainer, &deployOpts, ib, index, force)
createMessage, removeMessage, err := c.doReplaceContainer(ctx, oldContainer, &deployOpts, ib, index, replaceOpts.Force)
ch <- &types.ReplaceContainerMessage{
Create: createMessage,
Remove: removeMessage,
Expand Down
4 changes: 2 additions & 2 deletions cluster/cluster.go
Expand Up @@ -39,7 +39,7 @@ type Cluster interface {
RemoveNode(ctx context.Context, nodename, podname string) (*types.Pod, error)
ListPods(ctx context.Context) ([]*types.Pod, error)
ListPodNodes(ctx context.Context, podname string, all bool) ([]*types.Node, error)
ListContainers(ctx context.Context, appname, entrypoint, nodename string) ([]*types.Container, error)
ListContainers(ctx context.Context, opts *types.ListContainersOptions) ([]*types.Container, error)
ListNodeContainers(ctx context.Context, nodename string) ([]*types.Container, error)
ListNetworks(ctx context.Context, podname string, driver string) ([]*types.Network, error)
GetPod(ctx context.Context, podname string) (*types.Pod, error)
Expand All @@ -56,7 +56,7 @@ type Cluster interface {
RunAndWait(ctx context.Context, opts *types.DeployOptions, stdin io.ReadCloser) (chan *types.RunAndWaitMessage, error)
// this methods will not interrupt by client
CreateContainer(ctx context.Context, opts *types.DeployOptions) (chan *types.CreateContainerMessage, error)
ReplaceContainer(ctx context.Context, opts *types.DeployOptions, force bool) (chan *types.ReplaceContainerMessage, error)
ReplaceContainer(ctx context.Context, opts *types.DeployOptions, replaceOpts *types.ReplaceOptions) (chan *types.ReplaceContainerMessage, error)
RemoveContainer(ctx context.Context, IDs []string, force bool) (chan *types.RemoveContainerMessage, error)
ReallocResource(ctx context.Context, IDs []string, cpu float64, mem int64) (chan *types.ReallocResourceMessage, error)

Expand Down

0 comments on commit 6947791

Please sign in to comment.