Allow flags to be cleared properly

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

Branch: refs/heads/master
Commit: dfe6642fcbc1f059c131171396b47aaa7865b2a4
Parents: d26bc22
Author: Derek Gelinas <[email protected]>
Authored: Wed Feb 22 14:01:14 2017 -0500
Committer: Jeremy Mitchell <[email protected]>
Committed: Thu Mar 16 15:08:23 2017 -0600

----------------------------------------------------------------------
 traffic_ops/app/lib/UI/Server.pm   | 13 ++++++++++++-
 traffic_ops/bin/traffic_ops_ort.pl | 34 +++++++++++++++++++++++++++------
 2 files changed, 40 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/dfe6642f/traffic_ops/app/lib/UI/Server.pm
----------------------------------------------------------------------
diff --git a/traffic_ops/app/lib/UI/Server.pm b/traffic_ops/app/lib/UI/Server.pm
index 09cb5bc..002c16e 100644
--- a/traffic_ops/app/lib/UI/Server.pm
+++ b/traffic_ops/app/lib/UI/Server.pm
@@ -988,7 +988,11 @@ sub postupdate {
 
        my $self      = shift;
        my $updated   = $self->param("updated");
+       my $reval_updated = $self->param("reval_updated");
        my $host_name = $self->param("host_name");
+       print STDERR Dumper($updated);
+       print STDERR Dumper($reval_updated);
+       print STDERR Dumper($host_name);
        if ( !&is_admin($self) ) {
                $self->render( text => "Forbidden", status => 403, layout => 
undef );
                return;
@@ -1016,7 +1020,14 @@ sub postupdate {
 
        my $update_server =
                $self->db->resultset('Server')->search( { id => $serverid } );
-       if ( defined $updated ) {
+
+       my $use_reval_pending = $self->db->resultset('Parameter')->search( { 
-and => [ 'name' => 'use_reval_pending', 'config_file' => 'global' ] } 
)->get_column('value')->single;
+
+       if ( defined($use_reval_pending) && $use_reval_pending == 1 ) {
+               $update_server->update( { upd_pending => $updated } );
+               $update_server->update( { reval_pending => $reval_updated } );
+       }
+       else {
                $update_server->update( { upd_pending => $updated } );
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/dfe6642f/traffic_ops/bin/traffic_ops_ort.pl
----------------------------------------------------------------------
diff --git a/traffic_ops/bin/traffic_ops_ort.pl 
b/traffic_ops/bin/traffic_ops_ort.pl
index 451ebff..04db4cc 100755
--- a/traffic_ops/bin/traffic_ops_ort.pl
+++ b/traffic_ops/bin/traffic_ops_ort.pl
@@ -24,6 +24,7 @@ use MIME::Base64;
 use LWP::UserAgent;
 use Crypt::SSLeay;
 use Getopt::Long;
+use Data::Dumper;
 
 $| = 1;
 my $date           = `/bin/date`;
@@ -660,6 +661,17 @@ sub update_trops {
                $update_result++;
        }
        if ($update_result) {
+               #need to know if reval_pending is supported
+               my $url     = "$traffic_ops_host\/update/$hostname_short";
+               my $upd_ref = &lwp_get($url);
+               if ( $upd_ref =~ m/^\d{3}$/ ) {
+                       ( $log_level >> $ERROR ) && print "ERROR Update URL: 
$url returned $upd_ref. Exiting, not sure what else to do.\n";
+                       exit 1;
+               }
+               my $upd_json = decode_json($upd_ref);
+               my $upd_pending = ( defined( $upd_json->[0]->{'upd_pending'} ) 
) ? $upd_json->[0]->{'upd_pending'} : undef;
+               my $reval_pending = ( defined( 
$upd_json->[0]->{'reval_pending'} ) ) ? $upd_json->[0]->{'reval_pending'} : 
undef;
+
                if ( $script_mode == $INTERACTIVE ) {
                        ( $log_level >> $ERROR ) && print "ERROR Traffic Ops 
needs updated. Should I do that now? [Y/n] (n): ";
                        my $select = 'n';
@@ -674,18 +686,28 @@ sub update_trops {
                        }
                }
                elsif ( $script_mode == $BADASS || $script_mode == $SYNCDS ) {
-                       &send_update_to_trops($CLEAR);
+                       if ( !defined $reval_pending ) {
+                               &send_update_to_trops($CLEAR, $reval_pending );
+                       }
+                       else {
+                               &send_update_to_trops($CLEAR, $CLEAR);
+                       }
+               }
+               elsif ( $script_mode = $REVALIDATE ) {
+                       &send_update_to_trops($upd_pending, $CLEAR);
                }
        }
 }
 
 sub send_update_to_trops {
        my $status = shift;
+       my $reval_status = shift;
        my $url    = "$traffic_ops_host\/update/$hostname_short";
        ( $log_level >> $DEBUG ) && print "DEBUG Setting update flag in Traffic 
Ops to $status.\n";
 
        my %headers = ( 'Cookie' => $cookie );
-       my $response = $lwp_conn->post( $url, [ 'updated' => $status ], 
%headers );
+
+       my $response = $lwp_conn->post( $url, [ 'updated' => $status, 
'reval_updated' => $reval_status ], %headers );
 
        &check_lwp_response_code($response, $ERROR);
 
@@ -716,7 +738,7 @@ sub check_revalidate_state {
                }
 
                my $upd_json = decode_json($upd_ref);
-               my $reval_pending = ( defined( 
$upd_json->[0]->{'reval_pending'} ) ) ? $upd_json->[0]->{'upd_pending'} : undef;
+               my $reval_pending = ( defined( 
$upd_json->[0]->{'reval_pending'} ) ) ? $upd_json->[0]->{'reval_pending'} : 
undef;
                if ( !defined($reval_pending) ) {
                        ( $log_level >> $ERROR ) && print "ERROR Update URL: 
$url did not have an reval_pending key.  This mode is not compatible with the 
installed Traffic Ops version.\n";
                        exit 1;
@@ -726,7 +748,7 @@ sub check_revalidate_state {
                        ( $log_level >> $ERROR ) && print "ERROR Traffic Ops is 
signaling that a revalidation is waiting to be applied.\n";
                        $reval_update = $UPDATE_REVAL_NEEDED;
 
-                       my $parent_reval_pending = ( defined( 
$upd_json->[0]->{'parent_reval_pending'} ) ) ? 
$upd_json->[0]->{'parent_pending'} : undef;
+                       my $parent_reval_pending = ( defined( 
$upd_json->[0]->{'parent_reval_pending'} ) ) ? 
$upd_json->[0]->{'parent_reval_pending'} : undef;
                        if ( !defined($parent_reval_pending) ) {
                                ( $log_level >> $ERROR ) && print "ERROR Update 
URL: $url did not have an parent_reval_pending key.  Unable to continue!\n";
                                exit 1;
@@ -847,7 +869,7 @@ sub check_syncds_state {
 
                        my $parent_pending = ( defined( 
$upd_json->[0]->{'parent_pending'} ) ) ? $upd_json->[0]->{'parent_pending'} : 
undef;
                        my $parent_reval_pending = ( defined( 
$upd_json->[0]->{'parent_reval_pending'} ) ) ? 
$upd_json->[0]->{'parent_reval_pending'} : undef;
-                       
+                       print STDERR Dumper($parent_reval_pending);
                        if ( !defined($parent_pending) ) {
                                ( $log_level >> $ERROR ) && print "ERROR Update 
URL: $url did not have an parent_pending key.\n";
                                if ( $script_mode != $SYNCDS ) {
@@ -859,7 +881,7 @@ sub check_syncds_state {
                                }
                        }
                        if ( defined($parent_reval_pending) ) {
-                               ( $log_level >> $DEBUG ) && print "DEBUG Parent 
Reval Pending key exists!\n";
+                               ( $log_level >> $ERROR ) && print "ERROR Parent 
Reval Pending key exists!\n";
                                if ( ( $parent_pending == 1 || 
$parent_reval_pending == 1 ) && $wait_for_parents == 1 ) {
                                        ( $log_level >> $ERROR ) && print 
"ERROR Traffic Ops is signaling that my parents need an update.\n";
                                        if ( $script_mode == $SYNCDS ) {

Reply via email to