You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by el...@apache.org on 2018/06/14 17:31:32 UTC

[trafficcontrol] 05/05: Validate that STEERING_GEO targets are only used in CLIENT_STEERING DSes

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

elsloo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git

commit 0a3723485abfc29070ebd7759ecd05024fbc3301
Author: Rawlin Peters <ra...@comcast.com>
AuthorDate: Thu May 24 16:19:33 2018 -0600

    Validate that STEERING_GEO targets are only used in CLIENT_STEERING DSes
    
    Also, ensure that the coordinates in the json output are floats not
    strings.
---
 traffic_ops/app/lib/API/DeliveryService/Steering.pm              | 4 ++--
 traffic_ops/app/lib/API/DeliveryService/SteeringTarget.pm        | 9 +++++++--
 .../traffic_control/traffic_router/core/ds/SteeringTarget.java   | 1 -
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/traffic_ops/app/lib/API/DeliveryService/Steering.pm b/traffic_ops/app/lib/API/DeliveryService/Steering.pm
index 3c79615..e16ae5d 100644
--- a/traffic_ops/app/lib/API/DeliveryService/Steering.pm
+++ b/traffic_ops/app/lib/API/DeliveryService/Steering.pm
@@ -161,8 +161,8 @@ sub get_primary_origin_coordinates {
         return \%coordinates;
     }
 
-    $coordinates{lat} = $origin_rs->coordinate->latitude;
-    $coordinates{lon} = $origin_rs->coordinate->longitude;
+    $coordinates{lat} = $origin_rs->coordinate->latitude + 0.0;
+    $coordinates{lon} = $origin_rs->coordinate->longitude + 0.0;
 
     return \%coordinates;
 }
diff --git a/traffic_ops/app/lib/API/DeliveryService/SteeringTarget.pm b/traffic_ops/app/lib/API/DeliveryService/SteeringTarget.pm
index 8e0c5f3..dad82e8 100644
--- a/traffic_ops/app/lib/API/DeliveryService/SteeringTarget.pm
+++ b/traffic_ops/app/lib/API/DeliveryService/SteeringTarget.pm
@@ -126,7 +126,7 @@ sub update {
 	}
 
 	$params->{targetId} = $target_ds_id; # to ensure that is_valid passes
-	my ( $is_valid, $result ) = $self->is_target_valid($params);
+	my ( $is_valid, $result ) = $self->is_target_valid($params, $ds);
 
 	if ( !$is_valid ) {
 		return $self->alert($result);
@@ -196,7 +196,7 @@ sub create {
 		return $self->alert("Steering target delivery-service tenant is not available to the user.");
 	}
 
-	my ( $is_valid, $result ) = $self->is_target_valid($params);
+	my ( $is_valid, $result ) = $self->is_target_valid($params, $ds);
 
 	if ( !$is_valid ) {
 		return $self->alert($result);
@@ -289,12 +289,17 @@ sub delete {
 sub is_target_valid {
 	my $self   = shift;
 	my $params = shift;
+	my $steering_ds = shift;
 
 	my ( $is_valid, $target_type ) = $self->is_valid_target_type( $params->{typeId} );
 	if ( !$is_valid ) {
 		return ( 0, "Invalid target type" );
 	}
 
+	if ( $steering_ds->type->name ne "CLIENT_STEERING" && ($target_type eq "STEERING_GEO_WEIGHT" || $target_type eq "STEERING_GEO_ORDER") ) {
+		return(0, "Invalid target type: STEERING_GEO_WEIGHT and STEERING_GEO_ORDER are only supported in CLIENT_STEERING delivery services");
+	}
+
 	my $rules = {
 		fields => [qw/value typeId/],
 
diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/SteeringTarget.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/SteeringTarget.java
index c054ccd..db1c015 100644
--- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/SteeringTarget.java
+++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/SteeringTarget.java
@@ -32,7 +32,6 @@ public class SteeringTarget extends DefaultHashable {
 	private int order = 0;
 	@JsonProperty
 	private int geoOrder = 0;
-	// TODO: lat/long should probably be moved to the DeliveryService itself, but this is ok for a start
 	@JsonProperty
 	private double latitude = DEFAULT_LAT;
 	@JsonProperty

-- 
To stop receiving notification emails like this one, please contact
elsloo@apache.org.