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!! -->