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

[2/3] incubator-trafficcontrol git commit: [TC-87] Modify monitoring config API to populate profiles based on type instead of profile name.

[TC-87] Modify monitoring config API to populate profiles based on type instead of profile name.


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

Branch: refs/heads/master
Commit: 4e8b4100915c5a2aa3fa78db3614b5d5c3c7dc99
Parents: 7290652
Author: Jeff Elsloo <je...@cable.comcast.com>
Authored: Thu Jan 5 16:26:29 2017 -0700
Committer: Dave Neuman <ne...@apache.org>
Committed: Fri Jan 6 13:43:32 2017 -0700

----------------------------------------------------------------------
 traffic_ops/app/lib/API/Cdn.pm | 68 +++++++++++++++++++++++--------------
 1 file changed, 43 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/4e8b4100/traffic_ops/app/lib/API/Cdn.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/API/Cdn.pm b/traffic_ops/app/lib/API/Cdn.pm
index e8cfd8c..cc66c62 100644
--- a/traffic_ops/app/lib/API/Cdn.pm
+++ b/traffic_ops/app/lib/API/Cdn.pm
@@ -250,21 +250,29 @@ sub get_traffic_monitor_config {
 	my @ccr_profiles;
 	my $ccr_profile_id;
 	my $data_obj;
+	my $profile_to_type;
+
+	my $rs_pp = $self->db->resultset('Server')->search(
+		{ 'cdn.name' => $cdn_name },
+		{   prefetch => ['cdn', 'profile', 'type'],
+			select   => 'me.profile',
+			distinct => 1
+		}
+	);
 
-	my @profile_ids = $self->db->resultset('Server')->search( { 'cdn.name' => $cdn_name }, { prefetch => ['cdn'] } )->get_column('profile')->all();
-	my $rs_pp = $self->db->resultset('Profile')->search( { id => { -in => \@profile_ids } } );
 	while ( my $row = $rs_pp->next ) {
-		if ( $row->name =~ m/^RASCAL/ ) {
-			$rascal_profile = $row->name;
+		if ( $row->type->name =~ m/^RASCAL/ ) {
+			$rascal_profile = $row->profile->name;
 		}
-		elsif ( $row->name =~ m/^CCR/ ) {
-			push( @ccr_profiles, $row->name );
+		elsif ( $row->type->name =~ m/^CCR/ ) {
+			push( @ccr_profiles, $row->profile->name );
 
 			# TODO MAT: support multiple CCR profiles
-			$ccr_profile_id = $row->id;
+			$ccr_profile_id = $row->profile->id;
 		}
-		elsif ( $row->name =~ m/^EDGE/ || $row->name =~ m/^MID/ ) {
-			push( @cache_profiles, $row->name );
+		elsif ( $row->type->name =~ m/^EDGE/ || $row->type->name =~ m/^MID/ ) {
+			push( @cache_profiles, $row->profile->name );
+			$profile_to_type->{$row->profile->name}->{$row->type->name} = $row->type->name;
 		}
 	}
 
@@ -272,10 +280,14 @@ sub get_traffic_monitor_config {
 		'parameter.config_file' => 'rascal-config.txt',
 		'profile.name'          => $rascal_profile
 	);
+
 	$rs_pp = $self->db->resultset('ProfileParameter')->search( \%condition, { prefetch => [ { 'parameter' => undef }, { 'profile' => undef } ] } );
+
 	while ( my $row = $rs_pp->next ) {
 		my $parameter;
+
 		if ( $row->parameter->name =~ m/location/ ) { next; }
+
 		if ( $row->parameter->value =~ m/^\d+$/ ) {
 			$data_obj->{'config'}->{ $row->parameter->name } =
 				int( $row->parameter->value );
@@ -289,35 +301,36 @@ sub get_traffic_monitor_config {
 		'parameter.config_file' => 'rascal.properties',
 		'profile.name'          => { -in => \@cache_profiles }
 	);
+
 	$rs_pp = $self->db->resultset('ProfileParameter')->search( \%condition, { prefetch => [ { 'parameter' => undef }, { 'profile' => undef } ] } );
 
 	if ( !exists( $data_obj->{'profiles'} ) ) {
 		$data_obj->{'profiles'} = undef;
 	}
+
 	my $profile_tracker;
 
 	while ( my $row = $rs_pp->next ) {
+		if ( exists($profile_to_type->{$row->profile->name}) ) {
+			for my $profile_type ( keys(%{$profile_to_type->{$row->profile->name}}) ) {
+				$profile_tracker->{ $profile_type }->{ $row->profile->name }->{'type'} = $profile_type;
+				$profile_tracker->{ $profile_type }->{ $row->profile->name }->{'name'} = $row->profile->name;
 
-		my $type;
-		if ( $row->profile->name =~ m/^EDGE/ ) {
-			$type = "EDGE";
-		}
-		elsif ( $row->profile->name =~ m/^MID/ ) {
-			$type = "MID";
-		}
-		$profile_tracker->{ $row->profile->name }->{'type'} = $type;
-		$profile_tracker->{ $row->profile->name }->{'name'} = $row->profile->name;
+				if ( $row->parameter->value =~ m/^\d+$/ ) {
+					$profile_tracker->{ $profile_type }->{ $row->profile->name }->{'parameters'}->{ $row->parameter->name } = int( $row->parameter->value );
+				}
 
-		if ( $row->parameter->value =~ m/^\d+$/ ) {
-			$profile_tracker->{ $row->profile->name }->{'parameters'}->{ $row->parameter->name } = int( $row->parameter->value );
-		}
-		else {
-			$profile_tracker->{ $row->profile->name }->{'parameters'}->{ $row->parameter->name } = $row->parameter->value;
+				else {
+					$profile_tracker->{ $profile_type }->{ $row->profile->name }->{'parameters'}->{ $row->parameter->name } = $row->parameter->value;
+				}
+			}
 		}
 	}
 
-	foreach my $profile ( keys %{$profile_tracker} ) {
-		push( @{ $data_obj->{'profiles'} }, $profile_tracker->{$profile} );
+	foreach my $type ( keys %{$profile_tracker}) {
+		foreach my $profile ( keys %{$profile_tracker->{$type}} ) {
+			push( @{ $data_obj->{'profiles'} }, $profile_tracker->{$type}->{$profile} );
+		}
 	}
 
 	foreach my $ccr_profile (@ccr_profiles) {
@@ -329,6 +342,7 @@ sub get_traffic_monitor_config {
 	}
 
 	my $rs_ds = $self->db->resultset('Deliveryservice')->search( { 'me.profile' => $ccr_profile_id, 'active' => 1 }, {} );
+
 	while ( my $row = $rs_ds->next ) {
 		my $delivery_service;
 
@@ -340,6 +354,7 @@ sub get_traffic_monitor_config {
 		$delivery_service->{'totalTpsThreshold'} = int( $row->global_max_tps || 0 );
 		push( @{ $data_obj->{'deliveryServices'} }, $delivery_service );
 	}
+
 	my $rs_caches = $self->db->resultset('Server')->search(
 		{ 'cdn.name' => $cdn_name },
 		{
@@ -347,6 +362,7 @@ sub get_traffic_monitor_config {
 			columns  => [ 'host_name', 'domain_name', 'tcp_port',   'interface_name', 'ip_address', 'ip6_address', 'id', 'xmpp_id' ]
 		}
 	);
+
 	while ( my $row = $rs_caches->next ) {
 		if ( $row->type->name eq "RASCAL" ) {
 			my $traffic_monitor;
@@ -387,6 +403,7 @@ sub get_traffic_monitor_config {
 			distinct => 1
 		}
 	);
+
 	while ( my $row = $rs_loc->next ) {
 		my $cache_group;
 		my $latitude  = $row->cachegroup->latitude + 0;
@@ -396,6 +413,7 @@ sub get_traffic_monitor_config {
 		$cache_group->{'name'}                       = $row->cachegroup->name;
 		push( @{ $data_obj->{'cacheGroups'} }, $cache_group );
 	}
+
 	return ($data_obj);
 }