Index: /branches/amp_3_7_2/scripts/import_es_snapshot.sh
===================================================================
--- /branches/amp_3_7_2/scripts/import_es_snapshot.sh	(revision 2791)
+++ /branches/amp_3_7_2/scripts/import_es_snapshot.sh	(working copy)
@@ -100,22 +100,10 @@
 
 log "Snapshot directory copied successfully"
 
-# -----------------------------------------------
-# STEP 4 — Register ES repository
-# -----------------------------------------------
-log "[4/9] Registering snapshot repository in Elasticsearch"
-
-curl -s -XPUT "http://localhost:9200/_snapshot/amp_restore_repo" \
-  -H "Content-Type: application/json" \
-  -d "{\"type\":\"fs\",\"settings\":{\"location\":\"$LOCAL_SNAPSHOT_DIR\"}}" \
-  >> "$LOG_FILE" 2>&1
-
-log "Repository registered"
-
 # ----------------------------------------------------------
-# STEP 5 — Set path.repo and restart Elasticsearch
+# STEP 4 — Set path.repo and restart Elasticsearch
 # ----------------------------------------------------------
-log "[5/9] Setting path.repo and restarting Elasticsearch..."
+log "[4/9] Setting path.repo and restarting Elasticsearch..."
 
 if ! grep -q "path.repo" /etc/elasticsearch/elasticsearch.yml 2>/dev/null; then
     echo "path.repo: [\"$LOCAL_SNAPSHOT_DIR\"]" >> /etc/elasticsearch/elasticsearch.yml \
\ No newline at end of file
@@ -132,6 +120,18 @@
 sleep 5
 
 # -----------------------------------------------
+# STEP 5 — Register ES repository
+# -----------------------------------------------
+log "[5/9] Registering snapshot repository in Elasticsearch"
+
+curl -s -XPUT "http://localhost:9200/_snapshot/amp_restore_repo" \
+  -H "Content-Type: application/json" \
+  -d "{\"type\":\"fs\",\"settings\":{\"location\":\"$LOCAL_SNAPSHOT_DIR\"}}" \
+  >> "$LOG_FILE" 2>&1
+
+log "Repository registered"
+
+# -----------------------------------------------
 # STEP 6 — Extract index list
 # -----------------------------------------------
 log "[6/9] Extracting index list..."
\ No newline at end of file
@@ -154,7 +154,7 @@
     log "[7/9] Date-range restore: $START_DATE → $END_DATE"
 
     while read INDEX; do
-        IDX_DATE=$(echo "$INDEX" | grep -o '[0-9]\{8\}')
+        IDX_DATE=$(echo "$INDEX" | grep -o '[0-9]\{4\}\.[0-9]\{2\}\.[0-9]\{2\}' | head -1)
         [[ -z "$IDX_DATE" ]] && continue
 
         IDX_DATE_FMT="${IDX_DATE:0:4}.${IDX_DATE:4:2}.${IDX_DATE:6:2}"
\ No newline at end of file
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/controller/snapshot_controller.py
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/controller/snapshot_controller.py	(revision 2791)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/controller/snapshot_controller.py	(working copy)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 
+import re
 import json
 import os
 import datetime
@@ -21,13 +22,11 @@
 # ROUTER
 # ============================================================
 def handle_snapshot_req(request, path=None):
-    andebug('an.model.cli', 'Inside handle_snapshot_req')
     try:
         if request.method == "POST":
             if path == "export":
                 return export_snapshot(request)
             elif path == "import":
-                andebug('an.model.cli', 'Inside path == import')
                 return import_snapshot(request)
 
         elif request.method == "GET":
@@ -47,73 +46,108 @@
 # EXPORT
 # ============================================================
 def export_snapshot(request):
-    if request.method != "POST":
-        return json_response({"error": "POST required"}, 405)
-
     try:
-        body = json.loads(request.body) if request.body else {}
-    except:
-        return json_response({"error": "Invalid JSON"}, 400)
 
-    result = SnapshotService.run_export(
-        location=body.get("location", "primary"),
-        ip=body.get("ip"),
-        username=body.get("username"),
-        password=body.get("password"),
-        path=body.get("path")
-    )
+        if request.method != "POST":
+            return json_response({"error": "POST required"}, 405)
 
-    if result.get("return_code") == 0:
-        return json_response({"message": "Snapshot export completed successfully"})
-    elif result.get("return_code") == 1:
-        return json_response({"message": "Error exporting snapshot: {}".format(result)})
-    else:
-        oper_log("error", "system", "Error exporting snapshot: {}".format(result))
-        return json_response({"error": "Error exporting snapshot"}, 500)
+        try:
+            body = json.loads(request.body) if request.body else {}
+        except:
+            return json_response({"error": "Invalid JSON"}, 400)
 
+        if body.get("ip"):
+            # username + password required
+            if not body.get("username") or not body.get("password"):
+                return json_response({"error": "username and password are required when ip is provided"}, status=400)
 
+            if body.get("location") == 'custom':
+                if body.get("path") is None:
+                    return json_response({"error": "Export path must be specified"}, status=400)
+
+        result = SnapshotService.run_export(
+            location=body.get("location", "primary"),
+            ip=body.get("ip"),
+            username=body.get("username"),
+            password=body.get("password"),
+            path=body.get("path")
+        )
+
+        error_msg = result.get("error", "")
+
+        if result.get("return_code") == 0:
+            return json_response({"message": "Snapshot export completed successfully"})
+        elif result.get("return_code") == 1:
+            oper_log("error", "system", "Error exporting snapshot: {}".format(str(error_msg)))
+            return json_response({"message": "Error exporting snapshot",
+                                  "details": "{}".format(str(error_msg))})
+        else:
+            oper_log("error", "system", "Error exporting snapshot: {}".format(str(result)))
+            return json_response({"error": "Error exporting snapshot"}, 500)
+
+    except Exception as e:
+        oper_log("error", "system", "Error Exporting Snapshot: {}".format(str(e)))
+        return json_response({"error": 500, "message": "Error Exporting Snapshot:"}, 500)
+
+
 # ============================================================
 # IMPORT
 # ============================================================
 def import_snapshot(request):
-    andebug("an.model.cli", "Inside import_snapshot")
 
     try:
-        body = json.loads(request.body)
-    except:
-        return json_response({"error": "Invalid JSON"}, 400)
+        try:
+            body = json.loads(request.body)
+        except:
+            return json_response({"error": "Invalid JSON"}, 400)
 
-    start_date = body.get("start_date")
-    end_date = body.get("end_date")
-    andebug("an.model.cli", "start_date: {}".format(start_date))
-    andebug("an.model.cli", "end_date: {}".format(end_date))
+        required = ["location", "ip", "username", "password"]
 
-    # DATE RULES
-    if end_date and not start_date:
-        return json_response({"error": "End date requires start date"}, 400)
+        # Validate fields
+        for field in required:
+            if field not in body or not body[field]:
+                return json_response({"error": "Missing field: %s" % field}, status=400)
 
-    if start_date and not end_date:
-        end_date = datetime.datetime.now().strftime("%Y-%m-%d")
+        if body.get("location") == 'custom':
+            if body.get("path") is None:
+                return json_response({"error": "Import path must be specified"}, status=400)
 
-    result = SnapshotService.run_import(
-        location=body.get("location", "primary"),
-        ip=body.get("ip"),
-        username=body.get("username"),
-        password=body.get("password"),
-        path=body.get("path"),
-        start_date=start_date,
-        end_date=end_date
-    )
+        start_date = body.get("start_date")
+        end_date = body.get("end_date")
 
-    if result.get("return_code") == 0:
-        return json_response({"message": "Snapshot import completed successfully"})
-    elif result.get("return_code") == 1:
-        return json_response({"message": "Error exporting snapshot: {}".format(result)})
-    else:
-        oper_log("error", "system", "Error importing snapshot: {}".format(result))
-        return json_response({"error": "Error importing snapshot"}, 500)
+        # DATE RULES
+        if end_date and not start_date:
+            return json_response({"error": "End date requires start date"}, 400)
 
+        if start_date and not end_date:
+            end_date = datetime.datetime.now().strftime("%Y-%m-%d")
 
+        result = SnapshotService.run_import(
+            location=body.get("location", "primary"),
+            ip=body.get("ip"),
+            username=body.get("username"),
+            password=body.get("password"),
+            path=body.get("path"),
+            start_date=start_date,
+            end_date=end_date
+        )
+        error_msg = result.get("error", "")
+
+        if result.get("return_code") == 0:
+            return json_response({"message": "Snapshot import completed successfully"})
+        elif result.get("return_code") == 1:
+            oper_log("error", "system", "Error importing snapshot: {}".format(str(error_msg)))
+            return json_response({"message": "Error exporting snapshot",
+                                  "details": {}.format(error_msg)})
+        else:
+            oper_log("error", "system", "Error importing snapshot: {}".format(str(result)))
+            return json_response({"error": "Error importing snapshot"}, 500)
+
+    except Exception as e:
+        oper_log("error", "system", "Error Importing Snapshot: {}".format(str(e)))
+        return json_response({"error": 500, "message": "Error Importing Snapshot:"}, 500)
+
+
 # ============================================================
 # STATUS HANDLERS
 # ============================================================
@@ -123,14 +157,33 @@
 
     try:
         with open(LOG_FILE_IMPORT) as f:
-            text = "".join(f.readlines()[-10:])
+            lines = f.readlines()[-10:]  # read last 10 lines
 
-        if "ERROR" in text or "exception" in text.lower():
-            return json_response({"status": "Error"})
+        text = "".join(lines)
 
-        if "SNAPSHOT RESTORED SUCCESSFULLY" in text:
-            return json_response({"status": "Successful"})
+        for line in reversed(lines):
+            if "error" in line.lower() or "exception" in line.lower():
+                ts = extract_timestamp(line)
+                if ts is not None:
+                    return json_response({
+                        "status": "Failed",
+                        "failed_at": ts
+                    })
+                else:
+                    return json_response({"status": "Failed"})
 
+        for line in reversed(lines):
+            if ("SNAPSHOT RESTORED SUCCESSFULLY" in line
+                    or "DATE RANGE RESTORE COMPLETED" in line):
+                ts = extract_timestamp(line)
+                if ts is not None:
+                    return json_response({
+                        "status": "Successful",
+                        "completed_at": ts
+                    })
+                else:
+                    return json_response({"status": "Successful"})
+
         return json_response({"status": "In Progress"})
 
     except Exception as e:
@@ -144,16 +197,42 @@
 
     try:
         with open(LOG_FILE_EXPORT, "r") as f:
-            text = "".join(f.readlines()[-10:])
+            lines = f.readlines()[-10:]  # read last 10 lines
 
-        if "ERROR" in text:
-            return json_response({"status": "Error"})
+        text = "".join(lines)
 
-        if "SNAPSHOT CREATED SUCCESSFULLY" in text:
-            return json_response({"status": "Successful"})
+        for line in reversed(lines):
+            if "error" in line.lower() or "exception" in line.lower():
+                ts = extract_timestamp(line)
+                if ts is not None:
+                    return json_response({
+                        "status": "Failed",
+                        "failed_at": ts
+                    })
+                else:
+                    return json_response({"status": "Failed"})
 
+        for line in reversed(lines):
+            if "SNAPSHOT CREATED SUCCESSFULLY" in line:
+                ts = extract_timestamp(line)
+                if ts is not None:
+                    return json_response({
+                        "status": "Successful",
+                        "completed_at": ts
+                    })
+                else:
+                    return json_response({"status": "Successful"})
+
         return json_response({"status": "In Progress"})
 
     except Exception as e:
         oper_log("error", "system", "Export status exception: {}".format(str(e)))
-        return json_response({"error": "Error fetching export status"}, 500)
\ No newline at end of file
+        return json_response({"error": "Error fetching export status"}, 500)
+
+
+def extract_timestamp(line):
+    """
+    Extract 'YYYY-MM-DD HH:MM:SS' anywhere in the line.
+    """
+    m = re.search(r"(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})", line)
+    return m.group(1) if m else None
Index: /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/services/snapshot_service.py
===================================================================
--- /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/services/snapshot_service.py	(revision 2791)
+++ /branches/amp_3_7_2/src/webui/webui/htdocs/new/src/hive/services/snapshot_service.py	(working copy)
@@ -58,8 +58,6 @@
     @staticmethod
     def run_export(location, ip=None, username=None, password=None, path=None):
 
-        andebug("an.model.cli", "Inside run_export")
-
         cmd = ["/ca/bin/export_es_snapshot.sh"]
 
         # PRIMARY
@@ -110,16 +108,9 @@
 
         # LOCATION HANDLING
         if location == "primary":
-            andebug("an.model.cli", "Using PRIMARY location")
             path = const.PRIMARY_ES_SNAPSHOT_LOC
 
         elif location == "secondary":
-            info = get_secondary_drive_info()
-            if not info.get("is_disk_available"):
-                return {"return_code": 1, "error": "Secondary disk unavailable"}
-            if not info.get("is_mounted"):
-                return {"return_code": 1, "error": "Secondary disk not mounted"}
-
             path = const.SECONDARY_ES_SNAPSHOT_LOC
 
         elif location == "custom":
@@ -128,14 +119,10 @@
         else:
             return {"return_code": 1, "error": "Invalid location"}
 
-        andebug("an.model.cli", "Resolved path: {}".format(path))
-
         # DATE NORMALIZATION
         try:
             start_norm = SnapshotService.normalize_date(start_date) if start_date else None
             end_norm = SnapshotService.normalize_date(end_date) if end_date else None
-            andebug("an.model.cli", "start_norm: {}".format(start_norm))
-            andebug("an.model.cli", "end_norm: {}".format(end_norm))
         except:
             return {"return_code": 1, "error": "Invalid date format"}
 
@@ -153,6 +140,4 @@
         if end_norm:
             cmd += ["--end", end_norm]
 
-        andebug("an.model.cli", "Final import command: {}".format(cmd))
-
         return SnapshotService._run(cmd)
