From 845420854b4925d0c7258813ca74f94be5d31c7c Mon Sep 17 00:00:00 2001
From: "Leigh B. Stoller" <stoller@flux.utah.edu>
Date: Fri, 19 Aug 2005 19:50:07 +0000
Subject: [PATCH] Add new stated to RELOAD machine. RELOADDONEV2 is now sent
 from the frisbee MFS, and stated will send an apod out to it. This updates
 the previous revision in which I was doing this for RELOADDONE state, so that
 we maintain backwards compatability with older frisbee MFSs.

---
 db/libdb.pm.in         |  6 +++++-
 event/stated/stated.in | 15 +++++++++------
 lib/libtb/tbdefs.c     |  2 ++
 lib/libtb/tbdefs.h     |  2 ++
 sql/database-fill.sql  |  7 +++++++
 5 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/db/libdb.pm.in b/db/libdb.pm.in
index 6df5e8e2ea..e11a110cc4 100644
--- a/db/libdb.pm.in
+++ b/db/libdb.pm.in
@@ -92,7 +92,8 @@ use vars qw(@ISA @EXPORT);
 	 TBDB_NODESTATE_ISUP TBDB_NODESTATE_REBOOTING TBDB_NODESTATE_REBOOTED
 	 TBDB_NODESTATE_SHUTDOWN TBDB_NODESTATE_BOOTING TBDB_NODESTATE_TBSETUP
 	 TBDB_NODESTATE_RELOADSETUP TBDB_NODESTATE_RELOADING
-	 TBDB_NODESTATE_RELOADDONE TBDB_NODESTATE_UNKNOWN
+	 TBDB_NODESTATE_RELOADDONE TBDB_NODESTATE_RELOADDONE_V2
+	 TBDB_NODESTATE_UNKNOWN
 	 TBDB_NODESTATE_PXEWAIT TBDB_NODESTATE_PXEWAKEUP
 	 TBDB_NODESTATE_PXEBOOTING TBDB_NODESTATE_ALWAYSUP
 	 TBDB_NODESTATE_MFSSETUP TBDB_NODESTATE_TBFAILED
@@ -141,6 +142,7 @@ use vars qw(@ISA @EXPORT);
 	 TB_OSID_FREEBSD_MFS TB_OSID_FRISBEE_MFS
 	 TBBootWhat TBNodeStateTimeout
 	 TBDB_TBCONTROL_RESET TBDB_TBCONTROL_RELOADDONE
+	 TBDB_TBCONTROL_RELOADDONE_V2
 	 TBDB_TBCONTROL_TIMEOUT TBDB_NO_STATE_TIMEOUT
 	 TBDB_TBCONTROL_PXEBOOT TBDB_TBCONTROL_BOOTING
 	 TBDB_TBCONTROL_CHECKGENISUP
@@ -521,6 +523,7 @@ sub TBDB_NODESTATE_MFSSETUP()   { "MFSSETUP"; }
 sub TBDB_NODESTATE_TBFAILED()	{ "TBFAILED"; }
 sub TBDB_NODESTATE_RELOADING()	{ "RELOADING"; }
 sub TBDB_NODESTATE_RELOADDONE()	{ "RELOADDONE"; }
+sub TBDB_NODESTATE_RELOADDONE_V2(){ "RELOADDONEV2"; }
 sub TBDB_NODESTATE_UNKNOWN()	{ "UNKNOWN"; };
 sub TBDB_NODESTATE_PXEWAIT()	{ "PXEWAIT"; }
 sub TBDB_NODESTATE_PXEWAKEUP()	{ "PXEWAKEUP"; }
@@ -567,6 +570,7 @@ sub TBDB_ALLOCSTATE_UNKNOWN()          { "UNKNOWN"; };
 
 sub TBDB_TBCONTROL_RESET	{ "RESET"; }
 sub TBDB_TBCONTROL_RELOADDONE	{ "RELOADDONE"; }
+sub TBDB_TBCONTROL_RELOADDONE_V2{ "RELOADDONEV2"; }
 sub TBDB_TBCONTROL_TIMEOUT	{ "TIMEOUT"; }
 sub TBDB_TBCONTROL_PXEBOOT	{ "PXEBOOT"; }
 sub TBDB_TBCONTROL_BOOTING	{ "BOOTING"; }
diff --git a/event/stated/stated.in b/event/stated/stated.in
index 95f78b92e8..183dcc9d0c 100755
--- a/event/stated/stated.in
+++ b/event/stated/stated.in
@@ -127,7 +127,6 @@ if ($opt{d}) {
 # Grab some constants into variables
 my $TBANYMODE    = TBDB_NODEOPMODE_ANY;
 my $TBRESET      = TBDB_TBCONTROL_RESET;
-my $TBRELOADDONE = TBDB_TBCONTROL_RELOADDONE;
 my $TBTIMEOUT    = TBDB_TBCONTROL_TIMEOUT;
 my $PXEBOOT      = TBDB_TBCONTROL_PXEBOOT;
 my $BOOTING      = TBDB_TBCONTROL_BOOTING;
@@ -145,6 +144,8 @@ my $TBISUP       = TBDB_NODESTATE_ISUP;
 my $PXEWAIT      = TBDB_NODESTATE_PXEWAIT;
 my $PXEWAKEUP    = TBDB_NODESTATE_PXEWAKEUP;
 my $PXEBOOTING   = TBDB_NODESTATE_PXEBOOTING;
+my $TBRELOADDONEV1    = TBDB_TBCONTROL_RELOADDONE;
+my $TBRELOADDONEV2    = TBDB_TBCONTROL_RELOADDONE_V2;
 my $TBTIMEOUTREBOOT   = TBDB_STATED_TIMEOUT_REBOOT;
 my $TBTIMEOUTNOTIFY   = TBDB_STATED_TIMEOUT_NOTIFY;
 my $TBTIMEOUTCMDRETRY = TBDB_STATED_TIMEOUT_CMDRETRY;
@@ -807,7 +808,7 @@ sub stateTransition($$) {
 		}
 		next;
 	    };
-	    /^$TBRELOADDONE$/ && do {
+	    (/^$TBRELOADDONEV1$/ || /^$TBRELOADDONEV2$/) && do {
 		handleCtrlEvent($node,$trig);
 		next;
 	    };
@@ -917,7 +918,7 @@ sub handleCtrlEvent($$) {
 	    info("Performed $TBRESET for $node\n");
 	    next;
 	};
-	/^$TBRELOADDONE$/ && do {
+	(/^$TBRELOADDONEV1$/ || /^$TBRELOADDONEV2$/) && do {
 	    info("Clearing reload info for $node\n");
 	    DBQueryFatal("delete from current_reloads where node_id='$node'");
 	    my ($pid,$eid);
@@ -930,9 +931,11 @@ sub handleCtrlEvent($$) {
 				 $UID, $pid, $eid);
 		info("Released $node from $pid/$eid\n");
 	    }
-	    info("Sending an apod to $node\n");
-	    system("$apod $node") == 0 or
-		notify("Could not apod $node after $TBRELOADDONE!\n");
+	    if ($event eq $TBRELOADDONEV2) {
+		info("Sending an apod to $node\n");
+		system("$apod $node") == 0 or
+		    notify("Could not apod $node after $TBRELOADDONEV2!\n");
+	    }
 	    next;
 	};
 	/^$TBTIMEOUT$/ && do {
diff --git a/lib/libtb/tbdefs.c b/lib/libtb/tbdefs.c
index d70d6a0af9..e7a36127c7 100644
--- a/lib/libtb/tbdefs.c
+++ b/lib/libtb/tbdefs.c
@@ -73,6 +73,7 @@ char *tbdb_eventtypes[] = {
         TBDB_NODESTATE_RELOADSETUP, 
         TBDB_NODESTATE_RELOADING, 
         TBDB_NODESTATE_RELOADDONE, 
+        TBDB_NODESTATE_RELOADDONE_V2, 
         TBDB_NODESTATE_UNKNOWN, 
         TBDB_NODEOPMODE_NORMAL, 
         TBDB_NODEOPMODE_DELAYING, 
@@ -86,6 +87,7 @@ char *tbdb_eventtypes[] = {
         TBDB_NODEOPMODE_UNKNOWN, 
         TBDB_TBCONTROL_RESET, 
         TBDB_TBCONTROL_RELOADDONE, 
+        TBDB_TBCONTROL_RELOADDONE_V2, 
         TBDB_TBCONTROL_TIMEOUT, 
     	0,
 };
diff --git a/lib/libtb/tbdefs.h b/lib/libtb/tbdefs.h
index 7f070a426f..36678223e4 100644
--- a/lib/libtb/tbdefs.h
+++ b/lib/libtb/tbdefs.h
@@ -84,6 +84,7 @@
 #define TBDB_NODESTATE_RELOADSETUP "RELOADSETUP"
 #define TBDB_NODESTATE_RELOADING  "RELOADING"
 #define TBDB_NODESTATE_RELOADDONE "RELOADDONE"
+#define TBDB_NODESTATE_RELOADDONE_V2 "RELOADDONEV2"
 #define TBDB_NODESTATE_UNKNOWN    "UNKNOWN"
 #define TBDB_NODESTATE_PXEWAIT    "PXEWAIT"
 #define TBDB_NODESTATE_PXEWAKEUP  "PXEWAKEUP"
@@ -102,6 +103,7 @@
 
 #define TBDB_TBCONTROL_RESET        "RESET"
 #define TBDB_TBCONTROL_RELOADDONE   "RELOADDONE"
+#define TBDB_TBCONTROL_RELOADDONE_V2 "RELOADDONEV2"
 #define TBDB_TBCONTROL_TIMEOUT      "TIMEOUT"
 
 #define TBDB_IFACEROLE_CONTROL		"ctrl"
diff --git a/sql/database-fill.sql b/sql/database-fill.sql
index c8c64e6a63..1c0a3fc449 100644
--- a/sql/database-fill.sql
+++ b/sql/database-fill.sql
@@ -215,9 +215,12 @@ REPLACE INTO mode_transitions VALUES ('NORMALv1','SHUTDOWN','NETBOOT','SHUTDOWN'
 REPLACE INTO mode_transitions VALUES ('NORMALv1','SHUTDOWN','NORMAL','REBOOTING','');
 REPLACE INTO mode_transitions VALUES ('NORMALv1','SHUTDOWN','RELOAD','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONE','MINIMAL','SHUTDOWN','');
+REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONEV2','MINIMAL','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONE','NETBOOT','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONE','NORMAL','REBOOTING','');
+REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONEV2','NORMAL','REBOOTING','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONE','NORMALv1','SHUTDOWN','');
+REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONEV2','NORMALv1','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','SHUTDOWN','MINIMAL','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','SHUTDOWN','NETBOOT','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','SHUTDOWN','NORMAL','REBOOTING','');
@@ -237,6 +240,7 @@ REPLACE INTO mode_transitions VALUES ('NORMALv2','SHUTDOWN','NETBOOT','SHUTDOWN'
 REPLACE INTO mode_transitions VALUES ('NORMALv2','SHUTDOWN','RELOAD','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','SHUTDOWN','PXEFBSD','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONE','NORMALv2','SHUTDOWN','');
+REPLACE INTO mode_transitions VALUES ('RELOAD','RELOADDONEV2','NORMALv2','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('NORMALv2','SHUTDOWN','PXEFBSD','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('RELOAD','SHUTDOWN','NORMALv2','SHUTDOWN','');
 REPLACE INTO mode_transitions VALUES ('NORMALv1','SHUTDOWN','PXEFBSD','SHUTDOWN','');
@@ -261,6 +265,7 @@ REPLACE INTO state_timeouts VALUES ('NORMAL','REBOOTED',60,'NOTIFY');
 REPLACE INTO state_timeouts VALUES ('MINIMAL','SHUTDOWN',120,'REBOOT');
 REPLACE INTO state_timeouts VALUES ('NORMALv1','TBSETUP',600,'NOTIFY');
 REPLACE INTO state_timeouts VALUES ('RELOAD','RELOADDONE',60,'NOTIFY');
+REPLACE INTO state_timeouts VALUES ('RELOAD','RELOADDONEV2',60,'NOTIFY');
 REPLACE INTO state_timeouts VALUES ('EXPTSTATUS','ACTIVATING',0,'');
 REPLACE INTO state_timeouts VALUES ('EXPTSTATUS','ACTIVE',0,'');
 REPLACE INTO state_timeouts VALUES ('EXPTSTATUS','NEW',0,'');
@@ -338,6 +343,7 @@ REPLACE INTO state_transitions VALUES ('RELOAD','BOOTING','BOOTING','DHCPRetry')
 REPLACE INTO state_transitions VALUES ('RELOAD','BOOTING','RELOADSETUP','BootOK');
 REPLACE INTO state_transitions VALUES ('RELOAD','BOOTING','SHUTDOWN','Error');
 REPLACE INTO state_transitions VALUES ('RELOAD','RELOADING','RELOADDONE','ReloadDone');
+REPLACE INTO state_transitions VALUES ('RELOAD','RELOADING','RELOADDONEV2','ReloadDone');
 REPLACE INTO state_transitions VALUES ('RELOAD','RELOADING','SHUTDOWN','Error');
 REPLACE INTO state_transitions VALUES ('RELOAD','RELOADSETUP','RELOADING','ReloadReady');
 REPLACE INTO state_transitions VALUES ('RELOAD','RELOADSETUP','SHUTDOWN','Error');
@@ -488,6 +494,7 @@ REPLACE INTO state_transitions VALUES ('GARCIA-STARGATEv1','TBFAILED','SHUTDOWN'
 
 
 REPLACE INTO state_triggers VALUES ('*','RELOAD','RELOADDONE','RESET, RELOADDONE');
+REPLACE INTO state_triggers VALUES ('*','RELOAD','RELOADDONEV2','RESET, RELOADDONEV2');
 REPLACE INTO state_triggers VALUES ('*','ALWAYSUP','SHUTDOWN','ISUP');
 REPLACE INTO state_triggers VALUES ('*','*','ISUP','RESET');
 REPLACE INTO state_triggers VALUES ('*','*','PXEBOOTING','PXEBOOT');
-- 
GitLab