Create Cassandra Backup Scripts

Issue-ID: AAF-249
Change-Id: I014a925545b9be1171e625dfd751e77350843405
Signed-off-by: Instrumental <jcgmisc@stl.gathman.org>
diff --git a/auth/auth-cass/docker/backup/backup.sh b/auth/auth-cass/docker/backup/backup.sh
new file mode 100644
index 0000000..db59d16
--- /dev/null
+++ b/auth/auth-cass/docker/backup/backup.sh
@@ -0,0 +1,28 @@
+# BEGIN Store prev
+if [ -e "6day" ]; then
+   rm -Rf 6day
+fi
+
+PREV=6day
+for D in 5day 4day 3day 2day yesterday; do
+   if [ -e "$D" ]; then
+      mv "$D" "$PREV"
+   fi
+   PREV="$D"
+done
+
+if [ -e "today" ]; then
+    mv today yesterday
+    gzip yesterday/*
+fi
+
+# END Store prev
+date
+docker exec -t aaf_cass bash -c "mkdir -p /opt/app/cass_backup"
+docker container cp cbackup.sh aaf_cass:/opt/app/cass_backup/backup.sh
+# echo "login as Root, then run \nbash /opt/app/cass_backup/backup.sh"
+docker exec -t aaf_cass bash /opt/app/cass_backup/backup.sh
+mkdir today
+docker container cp aaf_cass:/opt/app/cass_backup/. today
+
+date
diff --git a/auth/auth-cass/docker/backup/cbackup.sh b/auth/auth-cass/docker/backup/cbackup.sh
new file mode 100644
index 0000000..9c91d0c
--- /dev/null
+++ b/auth/auth-cass/docker/backup/cbackup.sh
@@ -0,0 +1,8 @@
+cd /opt/app/cass_backup
+DATA="ns role perm ns_attrib user_role cred cert x509 delegate approval approved future notify artifact health history"
+PWD=cassandra
+CQLSH="cqlsh -u cassandra -k authz -p $PWD"
+for T in $DATA ; do
+    echo "Creating $T.dat"
+    $CQLSH -e  "COPY authz.$T TO '$T.dat' WITH DELIMITER='|'"
+done
diff --git a/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java b/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java
index 4cf2dd5..6ef6a76 100644
--- a/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java
+++ b/auth/auth-core/src/main/java/org/onap/aaf/auth/local/TextIndex.java
@@ -125,65 +125,70 @@
 	}
 	
 	public void create(final Trans trans,final DataFile data, int maxLine, char delim, int fieldOffset, int skipLines) throws IOException {
-		RandomAccessFile raf;
 		FileChannel fos;
 		
 		List<Idx> list = new LinkedList<Idx>(); // Some hashcodes will double... DO NOT make a set
 		TimeTaken tt2 = trans.start("Open Files", Env.SUB);
+		RandomAccessFile raf=null;
 		try {
-			raf = new RandomAccessFile(file,"rw");
-			raf.setLength(0L);
-			fos = raf.getChannel();
-		} finally {
-			tt2.done();
-		}
-		
-		try {
-			
-			Token t = data.new Token(maxLine);  
-			Field f = t.new Field(delim);
-			
-			int count = 0;
-			if(skipLines>0) {
-				trans.info().log("Skipping",skipLines,"line"+(skipLines==1?" in":"s in"),data.file().getName());
-			}
-			for(int i=0;i<skipLines;++i) {
-				t.nextLine();
-			}
-			tt2 = trans.start("Read", Env.SUB);
 			try {
-				while(t.nextLine()) {
-					list.add(new Idx(f.at(fieldOffset),t.pos()));
-					++count;
-				}
+				raf = new RandomAccessFile(file,"rw");
+				raf.setLength(0L);
+				fos = raf.getChannel();
 			} finally {
 				tt2.done();
 			}
-			trans.checkpoint("    Read " + count + " records");
-			tt2 = trans.start("Sort List", Env.SUB);
-			Collections.sort(list);
-			tt2.done();
-			tt2 = trans.start("Write Idx", Env.SUB);
+			
 			try {
-				ByteBuffer bb = ByteBuffer.allocate(8*1024);
-				IntBuffer ib = bb.asIntBuffer();
-				for(Idx idx : list) {
-					if(!ib.hasRemaining()) {
-						fos.write(bb);
-						ib.clear();
-						bb.rewind();
+				
+				Token t = data.new Token(maxLine);  
+				Field f = t.new Field(delim);
+				
+				int count = 0;
+				if(skipLines>0) {
+					trans.info().log("Skipping",skipLines,"line"+(skipLines==1?" in":"s in"),data.file().getName());
+				}
+				for(int i=0;i<skipLines;++i) {
+					t.nextLine();
+				}
+				tt2 = trans.start("Read", Env.SUB);
+				try {
+					while(t.nextLine()) {
+						list.add(new Idx(f.at(fieldOffset),t.pos()));
+						++count;
 					}
-					ib.put(idx.hash);
-					ib.put(idx.pos);
+				} finally {
+					tt2.done();
 				}
-				bb.limit(4*ib.position());
-				fos.write(bb);
-			} finally {
+				trans.checkpoint("    Read " + count + " records");
+				tt2 = trans.start("Sort List", Env.SUB);
+				Collections.sort(list);
 				tt2.done();
-			}
+				tt2 = trans.start("Write Idx", Env.SUB);
+				try {
+					ByteBuffer bb = ByteBuffer.allocate(8*1024);
+					IntBuffer ib = bb.asIntBuffer();
+					for(Idx idx : list) {
+						if(!ib.hasRemaining()) {
+							fos.write(bb);
+							ib.clear();
+							bb.rewind();
+						}
+						ib.put(idx.hash);
+						ib.put(idx.pos);
+					}
+					bb.limit(4*ib.position());
+					fos.write(bb);
+				} finally {
+					tt2.done();
+				}
+			} finally {
+				fos.close();
+			} 
 		} finally {
-			fos.close();
-			raf.close(); // closed by fos
+			if(raf!=null) {
+				raf.close(); // closed by fos
+			}
 		}
 	}