Skip to content
This repository was archived by the owner on Jun 18, 2022. It is now read-only.

Commit 740b4b2

Browse files
author
Craig Jellick
authored
Merge pull request #259 from orangedeng/windows-fix
Bug fix for agent in windows environment
2 parents 0aa3768 + c5a9e73 commit 740b4b2

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

core/compute/compute_windows.go

+43-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package compute
22

33
import (
44
"context"
5+
"strings"
6+
7+
"github.com/Sirupsen/logrus"
58

69
"github.com/docker/docker/api/types"
710
"github.com/docker/docker/api/types/container"
@@ -12,9 +15,36 @@ import (
1215
dutils "github.com/rancher/agent/utilities/docker"
1316
)
1417

18+
const (
19+
RancherDNSPriority = "io.rancher.container.dns.priority"
20+
RancherDomain = "rancher.internal"
21+
)
22+
1523
func setupPublishPorts(hostConfig *container.HostConfig, instance model.Instance) {}
1624

1725
func setupDNSSearch(hostConfig *container.HostConfig, instance model.Instance) error {
26+
var defaultDomains []string
27+
var svcNameSpace string
28+
var stackNameSpace string
29+
30+
if instance.Data.Fields.Labels != nil {
31+
setRancherSearchDomains := true
32+
if strings.EqualFold(strings.TrimSpace(instance.Data.Fields.Labels[RancherDNSPriority]), "None") {
33+
setRancherSearchDomains = false
34+
}
35+
if setRancherSearchDomains {
36+
if value, ok := instance.Data.Fields.Labels["io.rancher.stack_service.name"]; ok {
37+
splitted := strings.Split(value, "/")
38+
svc := strings.ToLower(splitted[1])
39+
stack := strings.ToLower(splitted[0])
40+
svcNameSpace = svc + "." + stack + "." + RancherDomain
41+
stackNameSpace = stack + "." + RancherDomain
42+
defaultDomains = append(defaultDomains, svcNameSpace)
43+
defaultDomains = append(defaultDomains, stackNameSpace)
44+
}
45+
}
46+
}
47+
hostConfig.DNSSearch = defaultDomains
1848
return nil
1949
}
2050

@@ -70,14 +100,26 @@ var cmdDNS = []string{
70100
func configureDNS(dockerClient *client.Client, containerID string) error {
71101
var err error
72102
var execObj types.ContainerExecCreateResponse
103+
var currentCMD []string
104+
currentCMD = append(currentCMD, cmdDNS...)
105+
//Setup dns search list
106+
info, err := dockerClient.ContainerInspect(context.Background(), containerID)
107+
if err == nil && len(info.HostConfig.DNSSearch) != 0 {
108+
dnsSearch := []string{}
109+
for i := 0; i < len(info.HostConfig.DNSSearch); i++ {
110+
dnsSearch = append(dnsSearch, `"`+info.HostConfig.DNSSearch[i]+`"`)
111+
}
112+
currentCMD[1] = currentCMD[1] + "; Set-DnsClientGlobalSetting -SuffixSearchList " + strings.Join(dnsSearch, ",")
113+
}
114+
logrus.Info(currentCMD)
73115
execConfig := types.ExecConfig{
74116
AttachStdout: true,
75117
AttachStdin: true,
76118
AttachStderr: true,
77119
Privileged: true,
78120
Tty: false,
79121
Detach: false,
80-
Cmd: cmdDNS,
122+
Cmd: currentCMD,
81123
}
82124

83125
if execObj, err = dockerClient.ContainerExecCreate(context.Background(), containerID, execConfig); err == nil {

register/register.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ import (
66
"bufio"
77
"crypto/rand"
88
"fmt"
9-
"github.com/Sirupsen/logrus"
10-
"github.com/pkg/errors"
11-
"github.com/rancher/go-rancher/v2"
129
"io"
1310
"io/ioutil"
1411
"net/http"
1512
"os"
1613
"strings"
1714
"time"
15+
16+
"github.com/Sirupsen/logrus"
17+
"github.com/pkg/errors"
18+
"github.com/rancher/go-rancher/v2"
1819
)
1920

2021
const (
@@ -56,8 +57,12 @@ func loadEnv(url string) (string, string, string, string) {
5657
str := strings.Split(line, "=")[1]
5758
cattleURL = str[1 : len(str)-1]
5859
} else if strings.Contains(line, "DETECTED_CATTLE_AGENT_IP") {
59-
str := strings.Split(line, "=")[1]
60-
agentIP = str[1 : len(str)-1]
60+
if envAgentIP := os.Getenv("CATTLE_AGENT_IP"); envAgentIP != "" {
61+
agentIP = envAgentIP
62+
} else {
63+
str := strings.Split(line, "=")[1]
64+
agentIP = str[1 : len(str)-1]
65+
}
6166
}
6267
}
6368
return accessKey, secretKey, cattleURL, agentIP

0 commit comments

Comments
 (0)