// CreateContainer for container creation in Mesos task func (c *Cluster) CreateContainer(config *cluster.ContainerConfig, name string, authConfig *dockerclient.AuthConfig) (*cluster.Container, error) { if config.Memory == 0 && config.CpuShares == 0 { return nil, errResourcesNeeded } task, err := task.NewTask(config, name, c.taskCreationTimeout) if err != nil { return nil, err } go c.pendingTasks.Add(task) select { case container := <-task.GetContainer(): return formatContainer(container), nil case err := <-task.Error: c.pendingTasks.Remove(task) return nil, err } }
// CreateContainer for container creation in Mesos task func (c *Cluster) CreateContainer(config *cluster.ContainerConfig, name string, authConfig *types.AuthConfig) (*cluster.Container, error) { if config.HostConfig.Memory == 0 && config.HostConfig.CPUShares == 0 { return nil, errResourcesNeeded } if !c.checkNameUniqueness(name) { return nil, fmt.Errorf("Conflict: The name %s is already assigned or in pending tasks. You have to delete (or rename) that container to be able to assign %s to a container again.", name, name) } task, err := task.NewTask(config, name, c.taskCreationTimeout) if err != nil { return nil, err } go c.pendingTasks.Add(task) select { case container := <-task.GetContainer(): return formatContainer(container), nil case err := <-task.Error: c.pendingTasks.Remove(task) return nil, err } }