Andy Baugh %!s(int64=5) %!d(string=hai) anos
pai
achega
4692bdfb90
Modificáronse 2 ficheiros con 59 adicións e 4 borrados
  1. 40 4
      js/pgupgrade.js
  2. 19 0
      lib/Troglodyne/API/Postgres.pm

+ 40 - 4
js/pgupgrade.js

@@ -97,7 +97,7 @@ function versionHandler (resp) {
 
 function doInstallScroller (resp) {
     'use strict';
-    let obj = JSON.parse(resp);
+    let obj = safeParseJSON(resp);
     let upgradeWell = document.getElementById('upgradeWell');
     let submitBtn = document.getElementById('submit');
     if(obj.result === 1) {
@@ -116,7 +116,8 @@ function doInstallScroller (resp) {
         upgradeWell.textContent += "\nNow proceeding with install of PostgreSQL " + window.selectedVersion + "...\n";
         doAPIRequestWithCallback( 'POST', 'Postgres', 'start_postgres_install', handlePGInstall, generalErrorHandler, { "version": window.selectedVersion } );
     } else {
-         upgradeWell.textContent += "Installlation of community repositories failed:" + obj.reason;
+         console.log(obj.error);
+         upgradeWell.textContent += "Installlation of community repositories failed:" + obj.error;
          submitBtn.textContent = 'Re-Try';
          submitBtn.disabled = false;
     }
@@ -126,16 +127,51 @@ function doInstallScroller (resp) {
 function handlePGInstall (resp) {
     'use strict';
     let obj = safeParseJSON(resp);
+    let upgradeWell = document.getElementById('upgradeWell');
+    let submitBtn = document.getElementById('submit');
     if(obj.result === 1) {
         console.log(obj);
-        console.log("OK. Now doing our install.");
+        upgradeWell.textContent += `Attaching to log file ${obj.data.log} from process #${obj.data.pid}...\n\n`;
+        doAPIRequestWithCallback( 'GET', 'Postgres', 'get_latest_upgradelog_messages', roadRoller, generalErrorHandler, { "pid": obj.data.pid, "log": obj.data.log, "start": 0 } );
     } else {
-        console.log(obj.error);
+         upgradeWell.textContent += `Installlation PostgreSQL ${window.selectedVersion} failed: ${obj.error}`;
+         submitBtn.textContent = 'Re-Try';
+         submitBtn.disabled = false;
     }
 
     return false;
 }
 
+// 8 seconds have passed
+function roadRoller (resp) {
+    'use strict';
+    let obj = safeParseJSON(resp);
+    let upgradeWell = document.getElementById('upgradeWell');
+    let submitBtn = document.getElementById('submit');
+    if(obj.result === 1) {
+
+        // Paste in new content
+        upgradeWell.textContent += obj.data['new_content'];
+        if(obj.data.in_progress) {
+            // Not done yet, keep going
+            doAPIRequestWithCallback(
+                'GET', 'Postgres', 'get_latest_upgradelog_messages', roadRoller, generalErrorHandler, {
+                    "pid": obj.metadata['input_args'].pid,
+                    "log": obj.metadata['input_args'].log,
+                    "start": obj.data['next_line']
+                }
+            );
+        } else {
+            // Do something based on the end status
+
+        }
+    } else {
+         upgradeWell.textContent += `Installlation PostgreSQL ${window.selectedVersion} failed: ${obj.error}`;
+         submitBtn.textContent = 'Re-Try';
+         submitBtn.disabled = false;
+    }
+}
+
 window.doUpgrade = function () {
     'use strict';
     let form = new FormData(upgradeForm);

+ 19 - 0
lib/Troglodyne/API/Postgres.pm

@@ -102,4 +102,23 @@ sub start_postgres_install {
     };
 }
 
+# Elegance??? Websocket??? Nah. EZ mode actibated
+sub get_latest_upgradelog_messages {
+    my ( $args_hr ) = @_;
+    my ( $line_no, $content, $child_exit );
+    my $in_progress = -f "$dir/INSTALL_IN_PROGRESS";
+    if(!$in_progress) {
+        $child_exit = readlink("$dir/INSTALL_EXIT_CODE");
+    }
+
+    # TODO: Actually read from it
+
+    return {
+        'in_progress' => $in_progress,
+        'child_exit'  => $child_exit,
+        'next_line'   => $line_no,
+        'new_content' => $content,
+    }
+}
+
 1;