This is an automated email from the ASF dual-hosted git repository.

dgelinas pushed a commit to branch 3.1.x
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/3.1.x by this push:
     new 0212637  3.1.x backport: to go fix server ipv6 validation allow empty 
str (#3869)
0212637 is described below

commit 02126378dca86121904ab2b7d4ec839e0829531b
Author: Steve Malenfant <[email protected]>
AuthorDate: Wed Aug 14 15:30:44 2019 -0400

    3.1.x backport: to go fix server ipv6 validation allow empty str (#3869)
    
    * Fix TO Servers validation to allow "" ipv6
    
    Fixes #2844
---
 CHANGELOG.md                                     | 1 +
 lib/go-tc/tovalidate/rules.go                    | 2 +-
 traffic_ops/traffic_ops_golang/server/servers.go | 8 +++++++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6ee168d..db4aaf7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 ### Added
 
 ### Changed
+- Fix TO Servers validation to allow "" ipv6
 
 
 ### Fixed
diff --git a/lib/go-tc/tovalidate/rules.go b/lib/go-tc/tovalidate/rules.go
index 3ea3ae1..f155810 100644
--- a/lib/go-tc/tovalidate/rules.go
+++ b/lib/go-tc/tovalidate/rules.go
@@ -154,7 +154,7 @@ func IsValidIPv6CIDROrAddress(value interface{}) error {
                                }
                        }
                }
-               return fmt.Errorf("unable to parse an IPv6 address or CIDR 
from: %s", v)
+               return fmt.Errorf("unable to parse an IPv6 address or CIDR 
from: %s", *v)
        default:
                return fmt.Errorf("IsValidIPv6CIDROrAddress validation failure: 
unknown type %T", value)
        }
diff --git a/traffic_ops/traffic_ops_golang/server/servers.go 
b/traffic_ops/traffic_ops_golang/server/servers.go
index 0d9590c..5e60a20 100644
--- a/traffic_ops/traffic_ops_golang/server/servers.go
+++ b/traffic_ops/traffic_ops_golang/server/servers.go
@@ -91,8 +91,14 @@ func (server *TOServer) GetType() string {
        return "server"
 }
 
-func (server *TOServer) Validate() error {
+func (server *TOServer) Sanitize() {
+       if server.IP6Address != nil && *server.IP6Address == "" {
+               server.IP6Address = nil
+       }
+}
 
+func (server *TOServer) Validate() error {
+       server.Sanitize()
        noSpaces := validation.NewStringRule(tovalidate.NoSpaces, "cannot 
contain spaces")
 
        validateErrs := validation.Errors{

Reply via email to