Skip to content

Commit effd4bc

Browse files
committed
feat: add init system detection and container management improvements
- Introduced `test-init-fix.sh` for testing init system detection and container setup. - Added `test-simple.yml` for a simple container configuration. - Refactored container manager creation to support backend selection in `down.go`, `logs.go`, `pause.go`, `ps.go`, `unpause.go`, and `up.go`. - Implemented `manager_factory.go` to handle backend-specific container manager instantiation. - Added `pct_manager.go` as a placeholder for Proxmox `pct` commands, with basic container management functions. - Enhanced `LXCManager` with improved logging and configuration generation for better container initialization.
1 parent 1a3e579 commit effd4bc

File tree

13 files changed

+637
-10
lines changed

13 files changed

+637
-10
lines changed

cmd/lxc-compose/down.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func downCmdRunE(_ *cobra.Command, args []string, configFile string) error {
4646
compose := cfg
4747

4848
// Create container manager
49-
manager, err := container.NewLXCManager("/var/lib/lxc")
49+
manager, err := container.NewManager(backend, "/var/lib/lxc")
5050
if err != nil {
5151
return fmt.Errorf("failed to create container manager: %w", err)
5252
}

cmd/lxc-compose/logs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func init() {
2525
name := args[0]
2626

2727
// Create container manager
28-
manager, err := container.NewLXCManager("/var/lib/lxc")
28+
manager, err := container.NewManager(backend, "/var/lib/lxc")
2929
if err != nil {
3030
return fmt.Errorf("failed to create container manager: %w", err)
3131
}

cmd/lxc-compose/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var (
1414
cfgFile string
1515
debugMode bool
1616
development bool
17+
backend string
1718
)
1819

1920
func init() {
@@ -22,6 +23,7 @@ func init() {
2223
rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.lxc-compose.yaml)")
2324
rootCmd.PersistentFlags().BoolVar(&debugMode, "debug", false, "enable debug logging")
2425
rootCmd.PersistentFlags().BoolVar(&development, "dev", false, "enable development mode")
26+
rootCmd.PersistentFlags().StringVar(&backend, "backend", "auto", "container backend to use (pct|lxc|auto)")
2527
}
2628

2729
func initConfig() {

cmd/lxc-compose/pause.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func init() {
1515
Args: cobra.MinimumNArgs(1),
1616
RunE: func(_ *cobra.Command, args []string) error {
1717
// Create container manager
18-
manager, err := container.NewLXCManager("/var/lib/lxc")
18+
manager, err := container.NewManager(backend, "/var/lib/lxc")
1919
if err != nil {
2020
return fmt.Errorf("failed to create container manager: %w", err)
2121
}

cmd/lxc-compose/ps.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func init() {
3636
}
3737

3838
// Create container manager
39-
manager, err := container.NewLXCManager("/var/lib/lxc")
39+
manager, err := container.NewManager(backend, "/var/lib/lxc")
4040
if err != nil {
4141
return fmt.Errorf("failed to create container manager: %w", err)
4242
}

cmd/lxc-compose/unpause.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func init() {
1515
Args: cobra.MinimumNArgs(1),
1616
RunE: func(_ *cobra.Command, args []string) error {
1717
// Create container manager
18-
manager, err := container.NewLXCManager("/var/lib/lxc")
18+
manager, err := container.NewManager(backend, "/var/lib/lxc")
1919
if err != nil {
2020
return fmt.Errorf("failed to create container manager: %w", err)
2121
}

cmd/lxc-compose/up.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func upCmdRunE(_ *cobra.Command, args []string) error {
4242
}
4343

4444
// Create container manager
45-
manager, err := container.NewLXCManager("/var/lib/lxc")
45+
manager, err := container.NewManager(backend, "/var/lib/lxc")
4646
if err != nil {
4747
return fmt.Errorf("failed to create container manager: %w", err)
4848
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: "3"
2+
services:
3+
minimal:
4+
image: "ubuntu:20.04"
5+
# Remove all network configuration to avoid networking issues
6+
storage:
7+
root: "1G"
8+
backend: "dir"
9+
security:
10+
privileged: false
11+
cpu:
12+
cores: 1
13+
memory:
14+
limit: "512M"
15+
environment:
16+
TEST_VAR: "minimal_test"

0 commit comments

Comments
 (0)