Skip to content

Commit 472c724

Browse files
committed
Fix update
1 parent 8371ddc commit 472c724

File tree

3 files changed

+168
-274
lines changed

3 files changed

+168
-274
lines changed

client/nginx.go

Lines changed: 79 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -44,42 +44,6 @@ type UpstreamServer struct {
4444
Service string `json:"service,omitempty"`
4545
}
4646

47-
func fillUpstreamServerWithDefaultValues(u UpstreamServer) UpstreamServer {
48-
if u.MaxConns == nil {
49-
defaultMaxConns := 0
50-
u.MaxConns = &defaultMaxConns
51-
}
52-
53-
if u.MaxFails == nil {
54-
defaultMaxFails := 1
55-
u.MaxFails = &defaultMaxFails
56-
}
57-
58-
if u.FailTimeout == "" {
59-
u.FailTimeout = "10s"
60-
}
61-
62-
if u.SlowStart == "" {
63-
u.SlowStart = "0s"
64-
}
65-
66-
if u.Backup == nil {
67-
defaultBackup := false
68-
u.Backup = &defaultBackup
69-
}
70-
71-
if u.Down == nil {
72-
defaultDown := false
73-
u.Down = &defaultDown
74-
}
75-
76-
if u.Weight == nil {
77-
defaultWeight := 1
78-
u.Weight = &defaultWeight
79-
}
80-
return u
81-
}
82-
8347
// StreamUpstreamServer lets you configure Stream upstreams.
8448
type StreamUpstreamServer struct {
8549
ID int `json:"id,omitempty"`
@@ -94,42 +58,6 @@ type StreamUpstreamServer struct {
9458
Service string `json:"service,omitempty"`
9559
}
9660

97-
func fillStreamUpstreamServerWithDefaultValues(u StreamUpstreamServer) StreamUpstreamServer {
98-
if u.MaxConns == nil {
99-
defaultMaxConns := 0
100-
u.MaxConns = &defaultMaxConns
101-
}
102-
103-
if u.MaxFails == nil {
104-
defaultMaxFails := 1
105-
u.MaxFails = &defaultMaxFails
106-
}
107-
108-
if u.FailTimeout == "" {
109-
u.FailTimeout = "10s"
110-
}
111-
112-
if u.SlowStart == "" {
113-
u.SlowStart = "0s"
114-
}
115-
116-
if u.Backup == nil {
117-
defaultBackup := false
118-
u.Backup = &defaultBackup
119-
}
120-
121-
if u.Down == nil {
122-
defaultDown := false
123-
u.Down = &defaultDown
124-
}
125-
126-
if u.Weight == nil {
127-
defaultWeight := 1
128-
u.Weight = &defaultWeight
129-
}
130-
return u
131-
}
132-
13361
type apiErrorResponse struct {
13462
Error apiError
13563
RequestID string `json:"request_id"`
@@ -579,13 +507,50 @@ func (client *NginxClient) UpdateHTTPServers(upstream string, servers []Upstream
579507
return toAdd, toDelete, toUpdate, nil
580508
}
581509

510+
func haveSameParameters(newServer UpstreamServer, serverNGX UpstreamServer) bool {
511+
newServer.ID = serverNGX.ID
512+
513+
if serverNGX.MaxConns != nil && newServer.MaxConns == nil {
514+
defaultMaxConns := 0
515+
newServer.MaxConns = &defaultMaxConns
516+
}
517+
518+
if serverNGX.MaxFails != nil && newServer.MaxFails == nil {
519+
defaultMaxFails := 1
520+
newServer.MaxFails = &defaultMaxFails
521+
}
522+
523+
if serverNGX.FailTimeout != "" && newServer.FailTimeout == "" {
524+
newServer.FailTimeout = "10s"
525+
}
526+
527+
if serverNGX.SlowStart != "" && newServer.SlowStart == "" {
528+
newServer.SlowStart = "0s"
529+
}
530+
531+
if serverNGX.Backup != nil && newServer.Backup == nil {
532+
defaultBackup := false
533+
newServer.Backup = &defaultBackup
534+
}
535+
536+
if serverNGX.Down != nil && newServer.Down == nil {
537+
defaultDown := false
538+
newServer.Down = &defaultDown
539+
}
540+
541+
if serverNGX.Weight != nil && newServer.Weight == nil {
542+
defaultWeight := 1
543+
newServer.Weight = &defaultWeight
544+
}
545+
546+
return reflect.DeepEqual(newServer, serverNGX)
547+
}
548+
582549
func determineUpdates(updatedServers []UpstreamServer, nginxServers []UpstreamServer) (toAdd []UpstreamServer, toRemove []UpstreamServer, toUpdate []UpstreamServer) {
583550
for _, server := range updatedServers {
584551
updateFound := false
585552
for _, serverNGX := range nginxServers {
586-
server.ID = serverNGX.ID
587-
newServer := fillUpstreamServerWithDefaultValues(server)
588-
if newServer.Server == serverNGX.Server && !reflect.DeepEqual(newServer, serverNGX) {
553+
if server.Server == serverNGX.Server && !haveSameParameters(server, serverNGX) {
589554
updateFound = true
590555
break
591556
}
@@ -842,14 +807,49 @@ func (client *NginxClient) getIDOfStreamServer(upstream string, name string) (in
842807
return -1, nil
843808
}
844809

810+
func haveStreamSameParameters(newServer StreamUpstreamServer, serverNGX StreamUpstreamServer) bool {
811+
newServer.ID = serverNGX.ID
812+
if serverNGX.MaxConns != nil && newServer.MaxConns == nil {
813+
defaultMaxConns := 0
814+
newServer.MaxConns = &defaultMaxConns
815+
}
816+
817+
if serverNGX.MaxFails != nil && newServer.MaxFails == nil {
818+
defaultMaxFails := 1
819+
newServer.MaxFails = &defaultMaxFails
820+
}
821+
822+
if serverNGX.FailTimeout != "" && newServer.FailTimeout == "" {
823+
newServer.FailTimeout = "10s"
824+
}
825+
826+
if serverNGX.SlowStart != "" && newServer.SlowStart == "" {
827+
newServer.SlowStart = "0s"
828+
}
829+
830+
if serverNGX.Backup != nil && newServer.Backup == nil {
831+
defaultBackup := false
832+
newServer.Backup = &defaultBackup
833+
}
834+
835+
if serverNGX.Down != nil && newServer.Down == nil {
836+
defaultDown := false
837+
newServer.Down = &defaultDown
838+
}
839+
840+
if serverNGX.Weight != nil && newServer.Weight == nil {
841+
defaultWeight := 1
842+
newServer.Weight = &defaultWeight
843+
}
844+
845+
return reflect.DeepEqual(newServer, serverNGX)
846+
}
847+
845848
func determineStreamUpdates(updatedServers []StreamUpstreamServer, nginxServers []StreamUpstreamServer) (toAdd []StreamUpstreamServer, toRemove []StreamUpstreamServer, toUpdate []StreamUpstreamServer) {
846849
for _, server := range updatedServers {
847850
updateFound := false
848851
for _, serverNGX := range nginxServers {
849-
server.ID = serverNGX.ID
850-
newServer := fillStreamUpstreamServerWithDefaultValues(server)
851-
852-
if server.Server == serverNGX.Server && !reflect.DeepEqual(newServer, serverNGX) {
852+
if server.Server == serverNGX.Server && !haveStreamSameParameters(server, serverNGX) {
853853
updateFound = true
854854
break
855855
}

0 commit comments

Comments
 (0)