update: Added Longhorn installation process and updated memory allocation for VMs

update: Added 'git' and 'vagrant' to required tools in pre-flight checks

fix: configured k3s install to use internal nic for flanel network

update: Added Longhorn installation process and updated memory allocation for VMs

update: Added 'git' and 'vagrant' to required tools in pre-flight checks

fix: configured k3s install to use internal nic for flanel network

fix: corrected JSON formatting for config json

update: reduce VM memory allocation to 2GB, add Longhorn installation scripts and prerequisites, and implement checks for existing pods

fix: merge issues

fix: merge issues

update: Added Longhorn installation process and updated memory allocation for VMs

update: Added 'git' and 'vagrant' to required tools in pre-flight checks

fix: configured k3s install to use internal nic for flanel network

update: Added Longhorn installation process and updated memory allocation for VMs

update: Added 'git' and 'vagrant' to required tools in pre-flight checks

fix: configured k3s install to use internal nic for flanel network

fix: corrected JSON formatting for config json

update: reduce VM memory allocation to 2GB, add Longhorn installation scripts and prerequisites, and implement checks for existing pods

update: improve error logging in RunJsonDeployment and RunCommand functions

update: add jq installation to provision script

update: add version flag

bump version

fix: improve error messages for config file reading

feat: add Windows gitbash installation support and improve binary download process

clean up tmp code

fix: increase timeout for some slower windows clients

feat: add Ingress and Service configurations for nginx deployment, and implement MetalLB  and Traeik installation scripts

refactor: remove obsolete Traefik installation script

feat: add environment checks and configurations for Vagrant setup, including dnsmasq  MetalLB  and ingress

feat: add deployment and installation scripts for infmon-cli, including Kubernetes configurations

feat: refactor customer project creation and add success/failure job scripts

refactor: rename customer references to project in configuration and application logic

feat: enhance JSON deployment handling with retry logic and command execution improvements

feat: enhance RunJsonDeployment with error handling and retry logic; add tests for configuration reading

feat: add automatic creation of base and config JSON files from examples if they do not exist

refactor: remove database package and related functionality; update app state initialization and error handling

refactor: update deployment handling to use ProjectConfig; improve error messages and logging

feat: enhance RunJsonDeployment retry logic with configurable delay; improve logging for retries

feat: implement LoadConfigs function for improved configuration loading; add logger setup

refactor: remove unused fields from BaseConfig and ProjectConfig structs for cleaner configuration management

refactor: clean up tests by removing obsolete functions and simplifying test cases

chore: update version to v0.0.5 in install script

feat: implement default configuration creation for BaseConfig and ProjectConfig; enhance validation logic

fix: enhance configuration parsing and loading; streamline flag handling and error reporting

refactor: remove obsolete configuration download logic from installation script
This commit is contained in:
jon brookes 2025-08-16 18:00:28 +01:00
parent d839fd5687
commit 11b1f1b637
61 changed files with 1573 additions and 761 deletions

View file

@ -1,7 +1,6 @@
package app
import (
"bufio"
"bytes"
"fmt"
"log/slog"
@ -65,55 +64,55 @@ func k8sCreateNamespace(project string) error {
return nil
}
func RunCommand(command string) error {
slog.Debug(fmt.Sprintf("🐞 Running command: %s", command))
cmd := exec.Command("sh", "-c", command)
// func RunCommand(command string) error {
// slog.Debug(fmt.Sprintf("🐞 Running command: %s", command))
// cmd := exec.Command("sh", "-c", command)
var stdout, stderr bytes.Buffer
// var stdout, stderr bytes.Buffer
// Get pipes for real-time reading
stdoutPipe, err := cmd.StdoutPipe()
if err != nil {
return fmt.Errorf("failed to create stdout pipe: %w", err)
}
stderrPipe, err := cmd.StderrPipe()
if err != nil {
return fmt.Errorf("failed to create stderr pipe: %w", err)
}
// // Get pipes for real-time reading
// stdoutPipe, err := cmd.StdoutPipe()
// if err != nil {
// return fmt.Errorf("failed to create stdout pipe: %w", err)
// }
// stderrPipe, err := cmd.StderrPipe()
// if err != nil {
// return fmt.Errorf("failed to create stderr pipe: %w", err)
// }
// Start the command
if err := cmd.Start(); err != nil {
return fmt.Errorf("failed to start command: %w", err)
}
// // Start the command
// if err := cmd.Start(); err != nil {
// return fmt.Errorf("failed to start command: %w", err)
// }
// Read stdout line by line and log through slog
go func() {
scanner := bufio.NewScanner(stdoutPipe)
for scanner.Scan() {
line := scanner.Text()
stdout.WriteString(line + "\n")
slog.Info(line)
}
}()
// // Read stdout line by line and log through slog
// go func() {
// scanner := bufio.NewScanner(stdoutPipe)
// for scanner.Scan() {
// line := scanner.Text()
// stdout.WriteString(line + "\n")
// slog.Info(line)
// }
// }()
// Read stderr line by line and log through slog
go func() {
scanner := bufio.NewScanner(stderrPipe)
for scanner.Scan() {
line := scanner.Text()
stderr.WriteString(line + "\n")
slog.Error(line)
}
}()
// // Read stderr line by line and log through slog
// go func() {
// scanner := bufio.NewScanner(stderrPipe)
// for scanner.Scan() {
// line := scanner.Text()
// stderr.WriteString(line + "\n")
// slog.Info(line)
// }
// }()
// Wait for command to complete
err = cmd.Wait()
if err != nil {
slog.Error(fmt.Sprintf("❌ Command failed with error: %v\n", err))
slog.Debug(fmt.Sprintf("🐞 Stdout: %s\n", stdout.String()))
slog.Debug(fmt.Sprintf("🐞 Stderr: %s\n", stderr.String()))
return fmt.Errorf("failed to run script command: %w", err)
}
// // Wait for command to complete
// err = cmd.Wait()
// if err != nil {
// slog.Error(fmt.Sprintf("❌ Command failed with error: %v\n", err))
// slog.Debug(fmt.Sprintf("🐞 Stdout: %s\n", stdout.String()))
// slog.Debug(fmt.Sprintf("🐞 Stderr: %s\n", stderr.String()))
// return fmt.Errorf("failed to run script command: %w", err)
// }
return nil
}
// return nil
// }