You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by mi...@apache.org on 2017/01/23 17:43:18 UTC

[3/4] incubator-trafficcontrol git commit: Fix TC-110 - parameterize ip_allow coalescing

Fix TC-110 - parameterize ip_allow coalescing


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/553e74f9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/553e74f9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/553e74f9

Branch: refs/heads/master
Commit: 553e74f9aa28b15e85f28042249f9304be47b469
Parents: 7591165
Author: Jan van Doorn <jv...@apache.org>
Authored: Sat Jan 21 00:07:46 2017 +0000
Committer: Jeremy Mitchell <mi...@gmail.com>
Committed: Mon Jan 23 10:42:28 2017 -0700

----------------------------------------------------------------------
 docs/source/admin/traffic_ops_config.rst |  8 ++++++++
 traffic_ops/app/lib/UI/ConfigFiles.pm    | 26 +++++++++++++++++++++-----
 2 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/553e74f9/docs/source/admin/traffic_ops_config.rst
----------------------------------------------------------------------
diff --git a/docs/source/admin/traffic_ops_config.rst b/docs/source/admin/traffic_ops_config.rst
index 90c0c1c..390788c 100644
--- a/docs/source/admin/traffic_ops_config.rst
+++ b/docs/source/admin/traffic_ops_config.rst
@@ -96,6 +96,14 @@ Below is a list of cache parameters that are likely to need changes from the def
 +--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
 | purge_allow_ip           | ip_allow.config   | The IP address range that is allowed to execute the PURGE method on the caches (not related to :ref:`rl-purge`)         |
 +--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
+| coalesce_masklen_v4	   | ip_allow.config   | The masklen to use when coalescing v4 networks into one line using http://search.cpan.org/~miker/NetAddr-IP-4.078/IP.pm |
++--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
+| coalesce_number_v4 	   | ip_allow.config   | The number to use when coalescing v4 networks into one line using http://search.cpan.org/~miker/NetAddr-IP-4.078/IP.pm  |
++--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
+| coalesce_masklen_v6	   | ip_allow.config   | The masklen to use when coalescing v6 networks into one line using http://search.cpan.org/~miker/NetAddr-IP-4.078/IP.pm |
++--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
+| coalesce_masklen_v6	   | ip_allow.config   | The masklen to use when coalescing v6 networks into one line using http://search.cpan.org/~miker/NetAddr-IP-4.078/IP.pm |
++--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
 | health.threshold.loadavg | rascal.properties | The Unix load average at which Traffic Router will stop sending traffic to this cache                                   |
 +--------------------------+-------------------+-------------------------------------------------------------------------------------------------------------------------+
 | health.threshold.\\      | rascal.properties | The amount of bandwidth that Traffic Router will try to keep available on the cache.                                    |

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/553e74f9/traffic_ops/app/lib/UI/ConfigFiles.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/ConfigFiles.pm b/traffic_ops/app/lib/UI/ConfigFiles.pm
index e10cceb..156ff2c 100644
--- a/traffic_ops/app/lib/UI/ConfigFiles.pm
+++ b/traffic_ops/app/lib/UI/ConfigFiles.pm
@@ -475,9 +475,14 @@ sub ip_allow_data {
 	$ipallow->[$i]->{action} = 'ip_allow';
 	$ipallow->[$i]->{method} = "ALL";
 	$i++;
+
+	# default for coalesce_ipv4 = 24, 5 and for ipv6 48, 5; override with the parameters in the server profile.
+	my $coalesce_masklen_v4 = 24;
+	my $coalesce_number_v4 = 5;
+	my $coalesce_masklen_v6 = 24;
+	my $coalesce_number_v6 = 5;
 	my $rs_parameter =
-		$self->db->resultset('ProfileParameter')
-		->search( { profile => $server->profile->id }, { prefetch => [ { parameter => undef }, { profile => undef } ] } );
+		$self->db->resultset('ProfileParameter')->search( { profile => $server->profile->id }, { prefetch => [ "parameter", "profile" ] } );
 
 	while ( my $row = $rs_parameter->next ) {
 		if ( $row->parameter->name eq 'purge_allow_ip' && $row->parameter->config_file eq 'ip_allow.config' ) {
@@ -486,6 +491,18 @@ sub ip_allow_data {
 			$ipallow->[$i]->{method} = "ALL";
 			$i++;
 		}
+		elsif ($row->parameter->name eq 'coalesce_masklen_v4' && $row->parameter->config_file eq 'ip_allow.config' ) {
+			$coalesce_masklen_v4 = $row->parameter->value;
+		}
+		elsif ($row->parameter->name eq 'coalesce_number_v4' && $row->parameter->config_file eq 'ip_allow.config' ) {
+			$coalesce_number_v4 = $row->parameter->value;
+		}
+		elsif ($row->parameter->name eq 'coalesce_masklen_v6' && $row->parameter->config_file eq 'ip_allow.config' ) {
+			$coalesce_masklen_v6 = $row->parameter->value;
+		}
+		elsif ($row->parameter->name eq 'coalesce_number_v6' && $row->parameter->config_file eq 'ip_allow.config' ) {
+			$coalesce_number_v6 = $row->parameter->value;
+		}
 	}
 
 	if ( $server->type->name =~ m/^MID/ ) {
@@ -533,9 +550,8 @@ sub ip_allow_data {
 		}
 
 		# compact, coalesce and compact combined list again
-		# if more than 5 servers are in a /24, list that /24 - TODO JvD: parameterize
 		my @compacted_list = NetAddr::IP::Compact(@allowed_netaddrips);
-		my $coalesced_list = NetAddr::IP::Coalesce( 24, 5, @allowed_netaddrips );
+		my $coalesced_list = NetAddr::IP::Coalesce( $coalesce_masklen_v4 , $coalesce_masklen_v4, @allowed_netaddrips );
 		my @combined_list  = NetAddr::IP::Compact( @allowed_netaddrips, @{$coalesced_list} );
 		foreach my $net (@combined_list) {
 			my $range = $net->range();
@@ -548,7 +564,7 @@ sub ip_allow_data {
 
 		# now add IPv6. TODO JvD: paremeterize support enabled on/ofd and /48 and number 5
 		my @compacted__ipv6_list = NetAddr::IP::Compact(@allowed_ipv6_netaddrips);
-		my $coalesced_ipv6_list  = NetAddr::IP::Coalesce( 48, 5, @allowed_ipv6_netaddrips );
+		my $coalesced_ipv6_list  = NetAddr::IP::Coalesce( $coalesce_masklen_v6 , $coalesce_number_v6, @allowed_ipv6_netaddrips );
 		my @combined_ipv6_list   = NetAddr::IP::Compact( @allowed_ipv6_netaddrips, @{$coalesced_ipv6_list} );
 		foreach my $net (@combined_ipv6_list) {
 			my $range = $net->range();