@@ -11,6 +11,7 @@ import (
11
11
"strings"
12
12
"time"
13
13
14
+ "github.com/blang/semver"
14
15
docker "github.com/fsouza/go-dockerclient"
15
16
"github.com/golang/glog"
16
17
kapi "k8s.io/kubernetes/pkg/api"
70
71
"openshift.default.svc" ,
71
72
"openshift.default.svc.cluster.local" ,
72
73
}
74
+ version15 = semver .MustParse ("1.5.0" )
75
+ version35 = semver .MustParse ("3.5.0" )
73
76
)
74
77
75
78
// Helper contains methods and utilities to help with OpenShift startup
@@ -611,6 +614,35 @@ func GetConfigFromContainer(client *docker.Client) (*configapi.MasterConfig, err
611
614
return config , nil
612
615
}
613
616
617
+ func (h * Helper ) serverVersion () (semver.Version , error ) {
618
+ versionText , _ , _ , err := h .runHelper .New ().Image (h .image ).
619
+ Command ("version" ).
620
+ Output ()
621
+ if err != nil {
622
+ return semver.Version {}, err
623
+ }
624
+ lines := strings .Split (versionText , "\n " )
625
+ versionStr := ""
626
+ for _ , line := range lines {
627
+ if strings .HasPrefix (line , "openshift" ) {
628
+ parts := strings .SplitN (line , " " , 2 )
629
+ versionStr = strings .TrimLeft (parts [1 ], "v" )
630
+ break
631
+ }
632
+ }
633
+ return semver .Parse (versionStr )
634
+ }
635
+
636
+ func useDNSIP (version semver.Version ) bool {
637
+ // Ignore pre-release portion
638
+ version .Pre = []semver.PRVersion {}
639
+
640
+ if version .Major == 1 {
641
+ return version .GTE (version15 )
642
+ }
643
+ return version .GTE (version35 )
644
+ }
645
+
614
646
func (h * Helper ) updateConfig (configDir string , opt * StartOptions ) error {
615
647
cfg , configPath , err := h .GetConfigFromLocalDir (configDir )
616
648
if err != nil {
@@ -686,8 +718,16 @@ func (h *Helper) updateConfig(configDir string, opt *StartOptions) error {
686
718
if err != nil {
687
719
return err
688
720
}
721
+ version , err := h .serverVersion ()
722
+ if err != nil {
723
+ return err
724
+ }
725
+ if useDNSIP (version ) {
726
+ nodeCfg .DNSIP = "172.30.0.1"
727
+ } else {
728
+ nodeCfg .DNSIP = ""
729
+ }
689
730
nodeCfg .DNSBindAddress = ""
690
- nodeCfg .DNSIP = ""
691
731
cfgBytes , err = configapilatest .WriteYAML (nodeCfg )
692
732
if err != nil {
693
733
return err
0 commit comments