mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-11 08:18:49 +00:00
feat: add --ignore-resource-checks option to production commands
- Introduced a new command-line option `--ignore-resource-checks` to skip prerequisite validation for disk, RAM, and CPU during installation and upgrades. - Updated the `ProductionSetup` struct to include a flag for skipping resource checks, enhancing flexibility for users with specific deployment needs. - Enhanced logging to inform users when resource checks are skipped, improving transparency during the setup process.
This commit is contained in:
parent
c2298e476e
commit
c405be3e69
13
CHANGELOG.md
13
CHANGELOG.md
@ -13,6 +13,19 @@ The format is based on [Keep a Changelog][keepachangelog] and adheres to [Semant
|
||||
### Deprecated
|
||||
|
||||
### Fixed
|
||||
## [0.69.3] - 2025-11-11
|
||||
|
||||
### Added
|
||||
- Added `--ignore-resource-checks` flag to the install command to skip disk, RAM, and CPU prerequisite validation.
|
||||
|
||||
### Changed
|
||||
\n
|
||||
### Deprecated
|
||||
|
||||
### Removed
|
||||
|
||||
### Fixed
|
||||
\n
|
||||
## [0.69.2] - 2025-11-11
|
||||
|
||||
### Added
|
||||
|
||||
2
Makefile
2
Makefile
@ -19,7 +19,7 @@ test-e2e:
|
||||
|
||||
.PHONY: build clean test run-node run-node2 run-node3 run-example deps tidy fmt vet lint clear-ports install-hooks kill
|
||||
|
||||
VERSION := 0.69.2
|
||||
VERSION := 0.69.3
|
||||
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
||||
DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||
LDFLAGS := -X 'main.version=$(VERSION)' -X 'main.commit=$(COMMIT)' -X 'main.date=$(DATE)'
|
||||
|
||||
@ -61,6 +61,7 @@ func showProdHelp() {
|
||||
fmt.Printf(" --bootstrap-join ADDR - Bootstrap raft join address (for secondary bootstrap)\n")
|
||||
fmt.Printf(" --domain DOMAIN - Domain for HTTPS (optional)\n")
|
||||
fmt.Printf(" --branch BRANCH - Git branch to use (main or nightly, default: main)\n")
|
||||
fmt.Printf(" --ignore-resource-checks - Skip disk/RAM/CPU prerequisite validation\n")
|
||||
fmt.Printf(" upgrade - Upgrade existing installation (requires root/sudo)\n")
|
||||
fmt.Printf(" Options:\n")
|
||||
fmt.Printf(" --restart - Automatically restart services after upgrade\n")
|
||||
@ -101,6 +102,7 @@ func handleProdInstall(args []string) {
|
||||
// Parse arguments
|
||||
force := false
|
||||
isBootstrap := false
|
||||
skipResourceChecks := false
|
||||
var vpsIP, domain, peersStr, bootstrapJoin, branch string
|
||||
|
||||
for i, arg := range args {
|
||||
@ -129,6 +131,8 @@ func handleProdInstall(args []string) {
|
||||
if i+1 < len(args) {
|
||||
branch = args[i+1]
|
||||
}
|
||||
case "--ignore-resource-checks":
|
||||
skipResourceChecks = true
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,7 +168,7 @@ func handleProdInstall(args []string) {
|
||||
|
||||
debrosHome := "/home/debros"
|
||||
debrosDir := debrosHome + "/.debros"
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch, false)
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch, false, skipResourceChecks)
|
||||
|
||||
// Save branch preference for future upgrades
|
||||
if err := production.SaveBranchPreference(debrosDir, branch); err != nil {
|
||||
@ -279,7 +283,7 @@ func handleProdUpgrade(args []string) {
|
||||
fmt.Printf(" This will preserve existing configurations and data\n")
|
||||
fmt.Printf(" Configurations will be updated to latest format\n\n")
|
||||
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch, noPull)
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch, noPull, false)
|
||||
|
||||
// Log if --no-pull is enabled
|
||||
if noPull {
|
||||
|
||||
@ -11,28 +11,29 @@ import (
|
||||
|
||||
// ProductionSetup orchestrates the entire production deployment
|
||||
type ProductionSetup struct {
|
||||
osInfo *OSInfo
|
||||
arch string
|
||||
debrosHome string
|
||||
debrosDir string
|
||||
logWriter io.Writer
|
||||
forceReconfigure bool
|
||||
skipOptionalDeps bool
|
||||
privChecker *PrivilegeChecker
|
||||
osDetector *OSDetector
|
||||
archDetector *ArchitectureDetector
|
||||
resourceChecker *ResourceChecker
|
||||
fsProvisioner *FilesystemProvisioner
|
||||
userProvisioner *UserProvisioner
|
||||
stateDetector *StateDetector
|
||||
configGenerator *ConfigGenerator
|
||||
secretGenerator *SecretGenerator
|
||||
serviceGenerator *SystemdServiceGenerator
|
||||
serviceController *SystemdController
|
||||
binaryInstaller *BinaryInstaller
|
||||
branch string
|
||||
skipRepoUpdate bool
|
||||
NodePeerID string // Captured during Phase3 for later display
|
||||
osInfo *OSInfo
|
||||
arch string
|
||||
debrosHome string
|
||||
debrosDir string
|
||||
logWriter io.Writer
|
||||
forceReconfigure bool
|
||||
skipOptionalDeps bool
|
||||
skipResourceChecks bool
|
||||
privChecker *PrivilegeChecker
|
||||
osDetector *OSDetector
|
||||
archDetector *ArchitectureDetector
|
||||
resourceChecker *ResourceChecker
|
||||
fsProvisioner *FilesystemProvisioner
|
||||
userProvisioner *UserProvisioner
|
||||
stateDetector *StateDetector
|
||||
configGenerator *ConfigGenerator
|
||||
secretGenerator *SecretGenerator
|
||||
serviceGenerator *SystemdServiceGenerator
|
||||
serviceController *SystemdController
|
||||
binaryInstaller *BinaryInstaller
|
||||
branch string
|
||||
skipRepoUpdate bool
|
||||
NodePeerID string // Captured during Phase3 for later display
|
||||
}
|
||||
|
||||
// ReadBranchPreference reads the stored branch preference from disk
|
||||
@ -63,7 +64,7 @@ func SaveBranchPreference(debrosDir, branch string) error {
|
||||
}
|
||||
|
||||
// NewProductionSetup creates a new production setup orchestrator
|
||||
func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure bool, branch string, skipRepoUpdate bool) *ProductionSetup {
|
||||
func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure bool, branch string, skipRepoUpdate bool, skipResourceChecks bool) *ProductionSetup {
|
||||
debrosDir := debrosHome + "/.debros"
|
||||
arch, _ := (&ArchitectureDetector{}).Detect()
|
||||
|
||||
@ -73,25 +74,26 @@ func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure
|
||||
}
|
||||
|
||||
return &ProductionSetup{
|
||||
debrosHome: debrosHome,
|
||||
debrosDir: debrosDir,
|
||||
logWriter: logWriter,
|
||||
forceReconfigure: forceReconfigure,
|
||||
arch: arch,
|
||||
branch: branch,
|
||||
skipRepoUpdate: skipRepoUpdate,
|
||||
privChecker: &PrivilegeChecker{},
|
||||
osDetector: &OSDetector{},
|
||||
archDetector: &ArchitectureDetector{},
|
||||
resourceChecker: NewResourceChecker(),
|
||||
fsProvisioner: NewFilesystemProvisioner(debrosHome),
|
||||
userProvisioner: NewUserProvisioner("debros", debrosHome, "/bin/bash"),
|
||||
stateDetector: NewStateDetector(debrosDir),
|
||||
configGenerator: NewConfigGenerator(debrosDir),
|
||||
secretGenerator: NewSecretGenerator(debrosDir),
|
||||
serviceGenerator: NewSystemdServiceGenerator(debrosHome, debrosDir),
|
||||
serviceController: NewSystemdController(),
|
||||
binaryInstaller: NewBinaryInstaller(arch, logWriter),
|
||||
debrosHome: debrosHome,
|
||||
debrosDir: debrosDir,
|
||||
logWriter: logWriter,
|
||||
forceReconfigure: forceReconfigure,
|
||||
arch: arch,
|
||||
branch: branch,
|
||||
skipRepoUpdate: skipRepoUpdate,
|
||||
skipResourceChecks: skipResourceChecks,
|
||||
privChecker: &PrivilegeChecker{},
|
||||
osDetector: &OSDetector{},
|
||||
archDetector: &ArchitectureDetector{},
|
||||
resourceChecker: NewResourceChecker(),
|
||||
fsProvisioner: NewFilesystemProvisioner(debrosHome),
|
||||
userProvisioner: NewUserProvisioner("debros", debrosHome, "/bin/bash"),
|
||||
stateDetector: NewStateDetector(debrosDir),
|
||||
configGenerator: NewConfigGenerator(debrosDir),
|
||||
secretGenerator: NewSecretGenerator(debrosDir),
|
||||
serviceGenerator: NewSystemdServiceGenerator(debrosHome, debrosDir),
|
||||
serviceController: NewSystemdController(),
|
||||
binaryInstaller: NewBinaryInstaller(arch, logWriter),
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,23 +159,27 @@ func (ps *ProductionSetup) Phase1CheckPrerequisites() error {
|
||||
ps.logf(" ✓ Basic dependencies available")
|
||||
|
||||
// Check system resources
|
||||
if err := ps.resourceChecker.CheckDiskSpace(ps.debrosHome); err != nil {
|
||||
ps.logf(" ❌ %v", err)
|
||||
return err
|
||||
}
|
||||
ps.logf(" ✓ Sufficient disk space available")
|
||||
if ps.skipResourceChecks {
|
||||
ps.logf(" ⚠️ Skipping system resource checks (disk, RAM, CPU) due to --ignore-resource-checks flag")
|
||||
} else {
|
||||
if err := ps.resourceChecker.CheckDiskSpace(ps.debrosHome); err != nil {
|
||||
ps.logf(" ❌ %v", err)
|
||||
return err
|
||||
}
|
||||
ps.logf(" ✓ Sufficient disk space available")
|
||||
|
||||
if err := ps.resourceChecker.CheckRAM(); err != nil {
|
||||
ps.logf(" ❌ %v", err)
|
||||
return err
|
||||
}
|
||||
ps.logf(" ✓ Sufficient RAM available")
|
||||
if err := ps.resourceChecker.CheckRAM(); err != nil {
|
||||
ps.logf(" ❌ %v", err)
|
||||
return err
|
||||
}
|
||||
ps.logf(" ✓ Sufficient RAM available")
|
||||
|
||||
if err := ps.resourceChecker.CheckCPU(); err != nil {
|
||||
ps.logf(" ❌ %v", err)
|
||||
return err
|
||||
if err := ps.resourceChecker.CheckCPU(); err != nil {
|
||||
ps.logf(" ❌ %v", err)
|
||||
return err
|
||||
}
|
||||
ps.logf(" ✓ Sufficient CPU cores available")
|
||||
}
|
||||
ps.logf(" ✓ Sufficient CPU cores available")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user