Add routable IP

This commit is contained in:
Jonathan Leibiusky @xetorthio
2017-08-25 14:33:43 -03:00
parent 19176966e2
commit a8567d8670
7 changed files with 60 additions and 28 deletions

View File

@@ -71,14 +71,19 @@ func (d *DinD) InstanceNew(session *types.Session, conf types.InstanceConfig) (*
if err != nil {
return nil, err
}
ip, err := dockerClient.CreateContainer(opts)
if err := dockerClient.CreateContainer(opts); err != nil {
return nil, err
}
ips, err := dockerClient.GetContainerIPs(containerName)
if err != nil {
return nil, err
}
instance := &types.Instance{}
instance.Image = opts.Image
instance.IP = ip
instance.IP = ips[session.Id]
instance.RoutableIP = instance.IP
instance.SessionId = session.Id
instance.Name = containerName
instance.Hostname = conf.Hostname
@@ -88,7 +93,7 @@ func (d *DinD) InstanceNew(session *types.Session, conf types.InstanceConfig) (*
instance.ServerKey = conf.ServerKey
instance.CACert = conf.CACert
instance.Session = session
instance.ProxyHost = router.EncodeHost(session.Id, ip, router.HostOpts{})
instance.ProxyHost = router.EncodeHost(session.Id, instance.RoutableIP, router.HostOpts{})
instance.SessionHost = session.Host
return instance, nil

View File

@@ -90,8 +90,7 @@ func (d *windows) InstanceNew(session *types.Session, conf types.InstanceConfig)
d.releaseInstance(session.Id, winfo.id)
return nil, err
}
_, err = dockerClient.CreateContainer(opts)
if err != nil {
if err = dockerClient.CreateContainer(opts); err != nil {
d.releaseInstance(session.Id, winfo.id)
return nil, err
}
@@ -100,6 +99,7 @@ func (d *windows) InstanceNew(session *types.Session, conf types.InstanceConfig)
instance.Name = containerName
instance.Image = opts.Image
instance.IP = winfo.privateIP
instance.RoutableIP = instance.IP
instance.SessionId = session.Id
instance.WindowsId = winfo.id
instance.Cert = conf.Cert
@@ -109,7 +109,7 @@ func (d *windows) InstanceNew(session *types.Session, conf types.InstanceConfig)
instance.ServerKey = conf.ServerKey
instance.CACert = conf.CACert
instance.Session = session
instance.ProxyHost = router.EncodeHost(session.Id, instance.IP, router.HostOpts{})
instance.ProxyHost = router.EncodeHost(session.Id, instance.RoutableIP, router.HostOpts{})
instance.SessionHost = session.Host
if cli, err := d.factory.GetForInstance(instance); err != nil {