prevent syncds from running if parent_reval_pending is flagged

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

Branch: refs/heads/master
Commit: d26bc22421ccca24677cda6767477a4cd7d93344
Parents: 70a1384
Author: Derek Gelinas <[email protected]>
Authored: Wed Feb 22 12:42:38 2017 -0500
Committer: Jeremy Mitchell <[email protected]>
Committed: Thu Mar 16 15:08:23 2017 -0600

----------------------------------------------------------------------
 traffic_ops/bin/traffic_ops_ort.pl | 100 +++++++++++++++++++++++---------
 1 file changed, 71 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/d26bc224/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 772da98..451ebff 100755
--- a/traffic_ops/bin/traffic_ops_ort.pl
+++ b/traffic_ops/bin/traffic_ops_ort.pl
@@ -846,6 +846,8 @@ sub check_syncds_state {
                        $syncds_update = $UPDATE_TROPS_NEEDED;
 
                        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;
+                       
                        if ( !defined($parent_pending) ) {
                                ( $log_level >> $ERROR ) && print "ERROR Update 
URL: $url did not have an parent_pending key.\n";
                                if ( $script_mode != $SYNCDS ) {
@@ -856,40 +858,80 @@ sub check_syncds_state {
                                        exit 1;
                                }
                        }
-                       if ( $parent_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 ) {
-                                       if ( $dispersion > 0 ) {
-                                               ( $log_level >> $WARN ) && 
print "WARN In syncds mode, sleeping for " . $dispersion . "s to see if the 
update my parents need is cleared.\n";
-                                               for ( my $i = $dispersion; $i > 
0; $i-- ) {
-                                                       ( $log_level >> $WARN ) 
&& print ".";
-                                                       sleep 1;
+                       if ( defined($parent_reval_pending) ) {
+                               ( $log_level >> $DEBUG ) && print "DEBUG 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 ) {
+                                               if ( $dispersion > 0 ) {
+                                                       ( $log_level >> $WARN ) 
&& print "WARN In syncds mode, sleeping for " . $dispersion . "s to see if the 
update my parents need is cleared.\n";
+                                                       for ( my $i = 
$dispersion; $i > 0; $i-- ) {
+                                                               ( $log_level >> 
$WARN ) && print ".";
+                                                               sleep 1;
+                                                       }
+                                               }
+       
+                                               ( $log_level >> $WARN ) && 
print "\n";
+                                               $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;
+                                               }
+                                               $upd_json = 
decode_json($upd_ref);
+                                               $parent_pending = ( defined( 
$upd_json->[0]->{'parent_pending'} ) ) ? $upd_json->[0]->{'parent_pending'} : 
undef;
+                                               if ( !defined($parent_pending) 
) {
+                                                       ( $log_level >> $ERROR 
) && print "ERROR Invalid JSON for $url. Exiting, not sure what else to do.\n";
+                                               }
+                                               if ( $parent_pending == 1 ) {
+                                                       ( $log_level >> $ERROR 
) && print "ERROR My parents still need an update, bailing.\n";
+                                                       exit 1;
+       
+                                               }
+                                               else {
+                                                       ( $log_level >> $DEBUG 
) && print "DEBUG The update on my parents cleared; continuing.\n";
                                                }
                                        }
-
-                                       ( $log_level >> $WARN ) && print "\n";
-                                       $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;
-                                       }
-                                       $upd_json = decode_json($upd_ref);
-                                       $parent_pending = ( defined( 
$upd_json->[0]->{'parent_pending'} ) ) ? $upd_json->[0]->{'parent_pending'} : 
undef;
-                                       if ( !defined($parent_pending) ) {
-                                               ( $log_level >> $ERROR ) && 
print "ERROR Invalid JSON for $url. Exiting, not sure what else to do.\n";
-                                       }
-                                       if ( $parent_pending == 1 ) {
-                                               ( $log_level >> $ERROR ) && 
print "ERROR My parents still need an update, bailing.\n";
-                                               exit 1;
-
-                                       }
-                                       else {
-                                               ( $log_level >> $DEBUG ) && 
print "DEBUG The update on my parents cleared; continuing.\n";
-                                       }
+                               }                       
+                               else {
+                                       ( $log_level >> $DEBUG ) && print 
"DEBUG Traffic Ops is signaling that my parents do not need an update, or 
wait_for_parents == 0.\n";
                                }
                        }
                        else {
-                               ( $log_level >> $DEBUG ) && print "DEBUG 
Traffic Ops is signaling that my parents do not need an update, or 
wait_for_parents == 0.\n";
+                               if ( $parent_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 ) {
+                                               if ( $dispersion > 0 ) {
+                                                       ( $log_level >> $WARN ) 
&& print "WARN In syncds mode, sleeping for " . $dispersion . "s to see if the 
update my parents need is cleared.\n";
+                                                       for ( my $i = 
$dispersion; $i > 0; $i-- ) {
+                                                               ( $log_level >> 
$WARN ) && print ".";
+                                                               sleep 1;
+                                                       }
+                                               }
+       
+                                               ( $log_level >> $WARN ) && 
print "\n";
+                                               $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;
+                                               }
+                                               $upd_json = 
decode_json($upd_ref);
+                                               $parent_pending = ( defined( 
$upd_json->[0]->{'parent_pending'} ) ) ? $upd_json->[0]->{'parent_pending'} : 
undef;
+                                               if ( !defined($parent_pending) 
) {
+                                                       ( $log_level >> $ERROR 
) && print "ERROR Invalid JSON for $url. Exiting, not sure what else to do.\n";
+                                               }
+                                               if ( $parent_pending == 1 ) {
+                                                       ( $log_level >> $ERROR 
) && print "ERROR My parents still need an update, bailing.\n";
+                                                       exit 1;
+       
+                                               }
+                                               else {
+                                                       ( $log_level >> $DEBUG 
) && print "DEBUG The update on my parents cleared; continuing.\n";
+                                               }
+                                       }
+                               }                       
+                               else {
+                                       ( $log_level >> $DEBUG ) && print 
"DEBUG Traffic Ops is signaling that my parents do not need an update, or 
wait_for_parents == 0.\n";
+                               }
                        }
                }
                elsif ( $script_mode == $SYNCDS && $upd_pending != 1 ) {

Reply via email to