Docker-DCO-1.1-Signed-off-by: Victor Vieux <vieux@docker.com> (github: vieux)
| ... | ... |
@@ -667,6 +667,35 @@ func (daemon *Daemon) RegisterLink(parent, child *Container, alias string) error |
| 667 | 667 |
return nil |
| 668 | 668 |
} |
| 669 | 669 |
|
| 670 |
+func (daemon *Daemon) RegisterLinks(container *Container, hostConfig *runconfig.HostConfig) error {
|
|
| 671 |
+ if hostConfig != nil && hostConfig.Links != nil {
|
|
| 672 |
+ for _, l := range hostConfig.Links {
|
|
| 673 |
+ parts, err := utils.PartParser("name:alias", l)
|
|
| 674 |
+ if err != nil {
|
|
| 675 |
+ return err |
|
| 676 |
+ } |
|
| 677 |
+ child, err := daemon.GetByName(parts["name"]) |
|
| 678 |
+ if err != nil {
|
|
| 679 |
+ return err |
|
| 680 |
+ } |
|
| 681 |
+ if child == nil {
|
|
| 682 |
+ return fmt.Errorf("Could not get container for %s", parts["name"])
|
|
| 683 |
+ } |
|
| 684 |
+ if err := daemon.RegisterLink(container, child, parts["alias"]); err != nil {
|
|
| 685 |
+ return err |
|
| 686 |
+ } |
|
| 687 |
+ } |
|
| 688 |
+ |
|
| 689 |
+ // After we load all the links into the daemon |
|
| 690 |
+ // set them to nil on the hostconfig |
|
| 691 |
+ hostConfig.Links = nil |
|
| 692 |
+ if err := container.WriteHostConfig(); err != nil {
|
|
| 693 |
+ return err |
|
| 694 |
+ } |
|
| 695 |
+ } |
|
| 696 |
+ return nil |
|
| 697 |
+} |
|
| 698 |
+ |
|
| 670 | 699 |
// FIXME: harmonize with NewGraph() |
| 671 | 700 |
func NewDaemon(config *daemonconfig.Config, eng *engine.Engine) (*Daemon, error) {
|
| 672 | 701 |
daemon, err := NewDaemonFromDirectory(config, eng) |
| ... | ... |
@@ -2029,37 +2029,6 @@ func (srv *Server) ImageGetCached(imgID string, config *runconfig.Config) (*imag |
| 2029 | 2029 |
return match, nil |
| 2030 | 2030 |
} |
| 2031 | 2031 |
|
| 2032 |
-func (srv *Server) RegisterLinks(container *daemon.Container, hostConfig *runconfig.HostConfig) error {
|
|
| 2033 |
- daemon := srv.daemon |
|
| 2034 |
- |
|
| 2035 |
- if hostConfig != nil && hostConfig.Links != nil {
|
|
| 2036 |
- for _, l := range hostConfig.Links {
|
|
| 2037 |
- parts, err := utils.PartParser("name:alias", l)
|
|
| 2038 |
- if err != nil {
|
|
| 2039 |
- return err |
|
| 2040 |
- } |
|
| 2041 |
- child, err := srv.daemon.GetByName(parts["name"]) |
|
| 2042 |
- if err != nil {
|
|
| 2043 |
- return err |
|
| 2044 |
- } |
|
| 2045 |
- if child == nil {
|
|
| 2046 |
- return fmt.Errorf("Could not get container for %s", parts["name"])
|
|
| 2047 |
- } |
|
| 2048 |
- if err := daemon.RegisterLink(container, child, parts["alias"]); err != nil {
|
|
| 2049 |
- return err |
|
| 2050 |
- } |
|
| 2051 |
- } |
|
| 2052 |
- |
|
| 2053 |
- // After we load all the links into the daemon |
|
| 2054 |
- // set them to nil on the hostconfig |
|
| 2055 |
- hostConfig.Links = nil |
|
| 2056 |
- if err := container.WriteHostConfig(); err != nil {
|
|
| 2057 |
- return err |
|
| 2058 |
- } |
|
| 2059 |
- } |
|
| 2060 |
- return nil |
|
| 2061 |
-} |
|
| 2062 |
- |
|
| 2063 | 2032 |
func (srv *Server) ContainerStart(job *engine.Job) engine.Status {
|
| 2064 | 2033 |
if len(job.Args) < 1 {
|
| 2065 | 2034 |
return job.Errorf("Usage: %s container_id", job.Name)
|
| ... | ... |
@@ -2100,7 +2069,7 @@ func (srv *Server) ContainerStart(job *engine.Job) engine.Status {
|
| 2100 | 2100 |
} |
| 2101 | 2101 |
} |
| 2102 | 2102 |
// Register any links from the host config before starting the container |
| 2103 |
- if err := srv.RegisterLinks(container, hostConfig); err != nil {
|
|
| 2103 |
+ if err := srv.daemon.RegisterLinks(container, hostConfig); err != nil {
|
|
| 2104 | 2104 |
return job.Error(err) |
| 2105 | 2105 |
} |
| 2106 | 2106 |
container.SetHostConfig(hostConfig) |