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 ) {
