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 2017/03/14 18:54:46 UTC

[6/7] incubator-trafficcontrol git commit: adds weight editing to the UI.

adds weight editing to the UI.


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

Branch: refs/heads/master
Commit: 3fcdc2dd89b45a49604336809a0a53625923c402
Parents: 0bd5f93
Author: Derek Gelinas <de...@cable.comcast.com>
Authored: Thu Mar 9 09:37:50 2017 -0500
Committer: Jeff Elsloo <je...@cable.comcast.com>
Committed: Tue Mar 14 12:54:07 2017 -0600

----------------------------------------------------------------------
 traffic_ops/app/lib/UI/Steering.pm              | 77 ++++++++++++++++++--
 .../app/templates/steering/index.html.ep        | 24 +++++-
 2 files changed, 90 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fcdc2dd/traffic_ops/app/lib/UI/Steering.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Steering.pm b/traffic_ops/app/lib/UI/Steering.pm
index b6ab1ad..cf58269 100644
--- a/traffic_ops/app/lib/UI/Steering.pm
+++ b/traffic_ops/app/lib/UI/Steering.pm
@@ -46,8 +46,12 @@ sub index {
 		$steering->{'target_id_2'}     = $keys[1];
 		$steering->{'target_name_1'}   = $self->get_ds_name( $keys[0] );
 		$steering->{'target_name_2'}   = $self->get_ds_name( $keys[1] );
+		$steering->{'target_id_1_weight'}   = $self->get_target_weight( $ds_id, $keys[0] );
+		$steering->{'target_id_2_weight'}   = $self->get_target_weight( $ds_id, $keys[1] );
 	}
-
+	if (!defined($steering->{'target_id_1_weight'})) { $steering->{'target_id_1_weight'} = 0; }
+	if (!defined($steering->{'target_id_2_weight'})) { $steering->{'target_id_2_weight'} = 0; }
+	
 	$self->stash(
 		steering       => $steering,
 		ds_data        => $self->get_deliveryservices(),
@@ -55,6 +59,14 @@ sub index {
 	);
 }
 
+sub get_target_weight{
+	my $self = shift;
+	my $ds_id = shift;
+	my $target_id = shift;
+	my $weight = $self->db->resultset('SteeringTarget')->search( { -and => [target => $target_id, deliveryservice => $ds_id] } )->get_column('weight')->single();
+	return $weight;
+}
+
 sub get_ds_name {
 	my $self  = shift;
 	my $ds_id = shift;
@@ -79,10 +91,15 @@ sub update {
 	my $ds_id = $self->param('id');
 	my $tid1  = $self->param('steering.target_id_1');
 	my $tid2  = $self->param('steering.target_id_2');
+	my $tid1_weight = $self->param('steering.target_id_1_weight');
+	my $tid2_weight = $self->param('steering.target_id_2_weight');
+	if ( $tid1_weight eq "" ) { $tid1_weight = 0; }
+	if ( $tid2_weight eq "" ) { $tid2_weight = 0; }
 	if ( $self->is_valid() ) {
 		my $targets;
-		$targets->{$tid1} = 0;
-		$targets->{$tid2} = 0;
+		$targets->{$tid1} = $tid1_weight;
+		$targets->{$tid2} = $tid2_weight;
+		
 
 		#delete current entries
 		my $delete = $self->db->resultset('SteeringTarget')
@@ -99,6 +116,7 @@ sub update {
 					weight          => $targets->{$target},
 				}
 			);
+			print STDERR Dumper($targets);
 			$insert->insert();
 		}
 
@@ -110,15 +128,32 @@ sub update {
 		$self->redirect_to("/ds/$ds_id/steering");
 	}
 	else {
+		print STDERR "problem!!!\n";
 		&stash_role($self);
+		my $target_name_1;
+		my $target_name_2;
+		my $target_id_1_weight;
+		my $target_id_2_weight;
+		if ($tid1 ) {
+			print STDERR Dumper($tid1);
+			$target_name_1 = $self->get_ds_name($tid1);
+			$target_id_1_weight = $self->get_target_weight( $ds_id, $tid1 );
+		}
+		if ($tid2 ) {
+			print STDERR Dumper($tid2);
+			$target_name_2 = $self->get_ds_name($tid2);
+			$target_id_2_weight = $self->get_target_weight( $ds_id, $tid2 );
+		}
 		$self->stash(
 			steering => {
 				ds_id           => $ds_id,
 				ds_name         => $self->get_ds_name($ds_id),
 				target_id_1     => $tid1,
 				target_id_2     => $tid2,
-				target_name_1   => $self->get_ds_name($tid1),
-				target_name_2   => $self->get_ds_name($tid2)
+				target_name_1   => $target_name_1,
+				target_name_2   => $target_name_2,
+				target_id_1_weight => $target_id_1_weight,
+				target_id_2_weight => $target_id_2_weight
 			},
 			ds_data        => $self->get_deliveryservices(),
 			fbox_layout    => 1
@@ -131,14 +166,40 @@ sub is_valid {
 	my $self  = shift;
 
 	#validate DSs are in the same CDN (same profile...)
-	my $t1_profile = $self->get_ds_profile( $self->param('steering.target_id_1') );
-	my $t2_profile = $self->get_ds_profile( $self->param('steering.target_id_2') );
+	my $t1 = $self->param('steering.target_id_1');
+	my $t2 = $self->param('steering.target_id_2');
+	my $t1_profile;
+	my $t2_profile;
+	my $tid1_weight = $self->param('steering.target_id_1_weight');
+	my $t1_name = $self->param('steering.target_name_1');
+	my $tid2_weight = $self->param('steering.target_id_2_weight');
+	my $t2_name = $self->param('steering.target_name_2');
+
+	unless ( $t1 eq '' ) {
+		$t1_profile = $self->get_ds_profile( $self->param('steering.target_id_1') );
+	}
+	unless ( $t2 eq '' ) {
+		$t2_profile = $self->get_ds_profile( $self->param('steering.target_id_2') );
+	}
+	
+	unless ( $t1 ) {
+		$self->field('steering.target_id_1')->is_equal( "",  "Steering targets cannot be blank!" );
+	}
+	unless ( $t2 ) {
+		$self->field('steering.target_id_2')->is_equal( "",  "Steering targets cannot be blank!" );
+	}
 
 	unless ( $t1_profile eq $t2_profile ) {
 		$self->field('steering.target_id_1')->is_equal( "",  "Target Deliveryservices must be in the same CDN!" );
 	}
+	unless ( $tid1_weight eq int($tid1_weight) && $tid1_weight >= 0 ) {
+		$self->field('steering.target_id_1_weight')->is_equal( "", "Error: \"$tid1_weight\" is not a valid integer of 0 or greater." );
+	}
+	unless ( $tid2_weight eq int($tid2_weight) && $tid2_weight >= 0 ) {
+		$self->field('steering.target_id_2_weight')->is_equal( "", "Error: \"$tid2_weight\" is not a valid integer of 0 or greater." );
+	}
 
-	return $self->valid;
+	return $self->valid();
 }
 
 sub get_ds_profile {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/3fcdc2dd/traffic_ops/app/templates/steering/index.html.ep
----------------------------------------------------------------------
diff --git a/traffic_ops/app/templates/steering/index.html.ep b/traffic_ops/app/templates/steering/index.html.ep
index 439e747..2b7a0d1 100644
--- a/traffic_ops/app/templates/steering/index.html.ep
+++ b/traffic_ops/app/templates/steering/index.html.ep
@@ -35,7 +35,7 @@
 					<h1>Steering Information:</h1>
 					<form method="post" action="/ds/<%= $steering->{ds_id} %>/steering/update" id="steering_form">
 						<div class="block">
-							%= label_for 'steering.ds_name' => 'DeliveryService Name:', class => 'label', style=>"width:150px;"
+							%= label_for 'steering.ds_name' => 'Steering Delivery Service: ', class => 'label', style=>"width:150px;"
 							%= field('steering.ds_name')->text(class => 'readonly_field', id => 'ds_name', name => 'steering.ds_name', readonly => 'readonly');
 						</div><br><br>
 						<div>
@@ -44,26 +44,44 @@
 							<% } %>
 							%= label_for 'steering.target_name_1' => 'Target Name:', class => 'label', style=>"width:150px;"
 							<select style="max-width:250px" name="steering.target_id_1">
-								<% if (defined($steering->{target_name_1})) { %>
+								<% if (defined($steering->{target_id_1})) { %>
 								<option value="<%=$steering->{target_id_1}%>" selected><%=$steering->{target_name_1}%></option>
+								<% } else { %>
+								<option value="" selected></option>
 								<% } %>
 								% foreach my $id (sort{$ds_data->{$a} cmp $ds_data->{$b}} keys %$ds_data) {
 								<option value="<%=$id%>"><%=$ds_data->{$id}%></option>
 								% }
 							</select>
 						</div><br>
+						<div>
+							<% unless (field('steering.target_id_1_weight')->valid) { %>
+							<span class="field-with-error"><%= field('steering.target_id_1_weight')->error %></span><br><br>
+							<% } %>
+							%= label_for 'steering.target_id_1_weight' => 'Target Weight (0 is default): ', class => 'label'
+									%= field('steering.target_id_1_weight')->text(class => 'field', id => 'steering.target_id_1_weight', style => 'width:60px', name => 'steering.target_id_1_weight');
+						</div><br>
 					</div>
 					<div>
 						%= label_for 'steering.target_name_2' => 'Target Name:', class => 'label', style=>"width:150px;"
 						<select style="max-width:250px" name="steering.target_id_2">
-							<% if (defined($steering->{target_name_2})) { %>
+							<% if (defined($steering->{target_id_2})) { %>
 							<option value="<%=$steering->{target_id_2}%>" selected><%=$steering->{target_name_2}%></option>
+							<% } else { %>
+							<option value="" selected></option>
 							<% } %>
 							% foreach my $id (sort{$ds_data->{$a} cmp $ds_data->{$b}} keys %$ds_data) {
 							<option value="<%=$id%>"><%=$ds_data->{$id}%></option>
 							% }
 						</select>
 					</div><br>
+						<div>
+							<% unless (field('steering.target_id_2_weight')->valid) { %>
+							<span class="field-with-error"><%= field('steering.target_id_2_weight')->error %></span><br><br>
+							<% } %>
+							%= label_for 'steering.target_id_2_weight' => 'Target Weight (0 is default): ', class => 'label'
+									%= field('steering.target_id_2_weight')->text(class => 'field', id => 'steering.target_id_2_weight', style => 'width:60px', name => 'steering.target_id_2_weight');
+						</div><br>
 					<div class="buttons-section" style="margin-bottom: 20px;">
 						<div style="margin-top: 25px; margin-left: 10px; position: relative; display: inline-block; float: left;">
 							<% if ($priv_level >= 20) { %>  <!-- operations and admins only!! -->