WIP: got the env variables to set in the php pod, need to make them dynamically be added rather than coded directly into lamp.rs
This commit is contained in:
		
							parent
							
								
									6653cebb87
								
							
						
					
					
						commit
						ac24eb6206
					
				| @ -1,84 +1,82 @@ | |||||||
| <?php | <?php | ||||||
| 
 | 
 | ||||||
| ini_set('display_errors', 1); | ini_set('display_errors', 1); | ||||||
| ini_set('display_startup_errors', 1); |  | ||||||
| error_reporting(E_ALL); | error_reporting(E_ALL); | ||||||
| 
 | 
 | ||||||
| $host = getenv('MYSQL_HOST') ?: 'localhost'; | // Load dynamic secrets from environment
 | ||||||
| $db   = 'testfill'; | $host = getenv('MYSQL_HOST') ?: ''; | ||||||
| $user = getenv('MYSQL_USER') ?: 'root'; | $user = getenv('MYSQL_USER') ?: 'root'; | ||||||
| $pass = getenv('MYSQL_PASSWORD') ?: ''; | $pass = getenv('MYSQL_PASSWORD') ?: ''; | ||||||
|  | $db   = 'testfill'; | ||||||
| $charset = 'utf8mb4'; | $charset = 'utf8mb4'; | ||||||
| 
 | 
 | ||||||
| // Setup PDO
 | // Connect to MariaDB
 | ||||||
| $dsn = "mysql:host=$host;charset=$charset"; | $dsn = "mysql:host=$host;charset=$charset"; | ||||||
| $options = [ | $options = [ | ||||||
|     PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION, |     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, | ||||||
|     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, |     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| try { | try { | ||||||
|     $pdo = new PDO($dsn, $user, $pass, $options); |   $pdo = new PDO($dsn, $user, $pass, $options); | ||||||
|     $pdo->exec("CREATE DATABASE IF NOT EXISTS `$db`"); |   $pdo->exec("CREATE DATABASE IF NOT EXISTS `$db`"); | ||||||
|     $pdo->exec("USE `$db`"); |   $pdo->exec("USE `$db`"); | ||||||
|     $pdo->exec(" |   $pdo->exec(" | ||||||
|         CREATE TABLE IF NOT EXISTS filler ( |         CREATE TABLE IF NOT EXISTS filler ( | ||||||
|             id INT AUTO_INCREMENT PRIMARY KEY, |             id INT AUTO_INCREMENT PRIMARY KEY, | ||||||
|             data LONGBLOB |             data LONGBLOB | ||||||
|         ) |         ) | ||||||
|     ");
 |     ");
 | ||||||
| } catch (\PDOException $e) { | } catch (\PDOException $e) { | ||||||
|     die("Database setup failed: " . $e->getMessage()); |     die("❌ DB connection failed: " . $e->getMessage()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Disk usage (PVC mount path)
 | // Get database size from information_schema
 | ||||||
| $mountPath = '/var/lib/mysql'; // Change this if PVC is mounted elsewhere
 | try { | ||||||
| $freeBytes = disk_free_space($mountPath); |     $stmt = $pdo->query(" | ||||||
| $totalBytes = disk_total_space($mountPath); |         SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb | ||||||
| $freeGB = round($freeBytes / (1024 ** 3), 2); |         FROM information_schema.tables | ||||||
| $totalGB = round($totalBytes / (1024 ** 3), 2); |         WHERE table_schema = 'testfill' | ||||||
| $usedGB = round(($totalBytes - $freeBytes) / (1024 ** 3), 2); |     ");
 | ||||||
|  |     $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; | ||||||
|  | } catch (Exception $e) { | ||||||
|  |     $dbSize = 'N/A'; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| $message = ''; | $message = ''; | ||||||
| 
 | 
 | ||||||
| 
 | if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) { | ||||||
| 
 |     // Insert ~1GB of binary data
 | ||||||
| if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['fill'])) { |     $iterations = 1024; | ||||||
|      |     $data = str_repeat(random_bytes(1024), 1024); // 1MB
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     $chunkSize = 1024 * 1024; // 1MB
 |  | ||||||
|     $iterations = 1024;       // 1GB total
 |  | ||||||
|     $data = str_repeat(random_bytes(1024), 1024); // ~1MB binary blob
 |  | ||||||
| 
 |  | ||||||
|     $stmt = $pdo->prepare("INSERT INTO filler (data) VALUES (:data)"); |     $stmt = $pdo->prepare("INSERT INTO filler (data) VALUES (:data)"); | ||||||
| 
 | 
 | ||||||
|     for ($i = 0; $i < $iterations; $i++) { |     for ($i = 0; $i < $iterations; $i++) { | ||||||
|         $stmt->execute([':data' => $data]); |         $stmt->execute([':data' => $data]); | ||||||
|     }  |     } | ||||||
| 
 | 
 | ||||||
|  |     // Recalculate DB size
 | ||||||
|  |     $stmt = $pdo->query(" | ||||||
|  |         SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb | ||||||
|  |         FROM information_schema.tables | ||||||
|  |         WHERE table_schema = 'testfill' | ||||||
|  |     ");
 | ||||||
|  |     $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; | ||||||
| 
 | 
 | ||||||
|     clearstatcache(); |     $message = "<p style='color: green;'>✅ 1GB inserted into MariaDB successfully.</p>"; | ||||||
|     $freeBytes = disk_free_space($mountPath); |  | ||||||
|     $freeGB = round($freeBytes / (1024 ** 3), 2); |  | ||||||
|     $usedGB = round(($totalBytes - $freeBytes) / (1024 ** 3), 2); |  | ||||||
| 
 |  | ||||||
|     $message = "<p style='color: green;'>✅ 1GB inserted. Disk usage updated.</p>"; |  | ||||||
| } | } | ||||||
| ?>
 | ?>
 | ||||||
| 
 | 
 | ||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
| <html> | <html> | ||||||
| <head> | <head> | ||||||
|     <title>Volume Filler</title> |     <title>MariaDB Filler</title> | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
|     <h1>Kubernetes PVC Filler</h1> |     <h1>MariaDB Storage Filler</h1> | ||||||
|     <?= $message ?>
 |     <?= $message ?>
 | ||||||
|     <ul> |     <ul> | ||||||
|         <li>Total PVC Space: <?= $totalGB ?> GB</li>
 |         <li><strong>MariaDB Used Size:</strong> <?= $dbSize ?> GB</li>
 | ||||||
|         <li>Used PVC Space: <?= $usedGB ?> GB</li>
 |  | ||||||
|         <li>Free PVC Space: <?= $freeGB ?> GB</li>
 |  | ||||||
|     </ul> |     </ul> | ||||||
| 
 | 
 | ||||||
|     <form method="post"> |     <form method="post"> | ||||||
| @ -87,4 +85,3 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['fill'])) { | |||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|  | |||||||
| @ -113,7 +113,18 @@ impl<T: Topology + K8sclient + HelmCommand> Interpret<T> for LAMPInterpret { | |||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             ]), |             { | ||||||
|  |                 "name": "MYSQL_HOST", | ||||||
|  |                 "value": "harmony-lamp-demo-database-mariadb" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |                 "name": "MYSQL_DATABASE", | ||||||
|  |                 "value": "testfill" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |                 "name": "MYSQL_USER", | ||||||
|  |                 "value": "root" 
 | ||||||
|  |             }]), | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         info!("Deploying score {deployment_score:#?}"); |         info!("Deploying score {deployment_score:#?}"); | ||||||
| @ -257,6 +268,13 @@ opcache.fast_shutdown=1 | |||||||
|              sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf" |              sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf" | ||||||
|         )); |         )); | ||||||
| 
 | 
 | ||||||
|  |         // Set env vars
 | ||||||
|  |         dockerfile.push(RUN::from( | ||||||
|  |             "echo 'PassEnv MYSQL_PASSWORD' >> /etc/apache2/sites-available/000-default.conf \ | ||||||
|  |              && echo 'PassEnv MYSQL_USER' >> /etc/apache2/sites-available/000-default.conf \ | ||||||
|  |              && echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf" | ||||||
|  |         )); | ||||||
|  | 
 | ||||||
|         // Create a dedicated user for running Apache
 |         // Create a dedicated user for running Apache
 | ||||||
|         dockerfile.push(RUN::from( |         dockerfile.push(RUN::from( | ||||||
|             "groupadd -g 1000 appuser && \ |             "groupadd -g 1000 appuser && \ | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user