Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion internal/cloning/cloning_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ func (cs *CloningService) CloneTemplate(req CloneRequest) error {
for _, target := range req.Targets {
vnetName := fmt.Sprintf("kamino%d", target.PodNumber)
log.Printf("Setting VNet %s for pool %s (target: %s)", vnetName, target.PoolName, target.Name)
err = cs.ProxmoxService.SetPodVnet(target.PoolName, vnetName)
err = cs.ProxmoxService.SetPodVnet(target.PoolName, vnetName, target.VMIDs[0])
if err != nil {
errors = append(errors, fmt.Sprintf("failed to update pod vnet for %s: %v", target.Name, err))
}
Expand Down
8 changes: 3 additions & 5 deletions internal/proxmox/networking.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"
"log"
"math"
"regexp"
"strings"
"time"

Expand Down Expand Up @@ -140,7 +139,7 @@ func (s *ProxmoxService) ConfigurePodRouter(podNumber int, node string, vmid int
return nil
}

func (s *ProxmoxService) SetPodVnet(poolName string, vnetName string) error {
func (s *ProxmoxService) SetPodVnet(poolName string, vnetName string, routerVMID int) error {
// Get all VMs in the pool
vms, err := s.GetPoolVMs(poolName)
if err != nil {
Expand All @@ -153,14 +152,13 @@ func (s *ProxmoxService) SetPodVnet(poolName string, vnetName string) error {

log.Printf("Setting VNet %s for %d VMs in pool %s", vnetName, len(vms), poolName)

routerRegex := regexp.MustCompile(`(?i).*(router|pfsense|vyos).*`)
var errors []string

for _, vm := range vms {
vnet := "net0"

// Detect if VM is a router based on its name (lazy way but requires fewer API calls)
if routerRegex.MatchString(vm.Name) {
// Identify the router by its VMID
if vm.VmId == routerVMID {
vnet = "net1"
log.Printf("Detected router VM %s (VMID: %d), using %s interface", vm.Name, vm.VmId, vnet)
} else {
Expand Down
2 changes: 1 addition & 1 deletion internal/proxmox/pools.go
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ func (s *ProxmoxService) CreateTemplatePool(creator string, name string, addRout
vnet := fmt.Sprintf("templ%d", templateID)

log.Printf("Configuring VNet %s for pool %s", vnet, poolName)
err = s.SetPodVnet(poolName, vnet)
err = s.SetPodVnet(poolName, vnet, routerVMID)
if err != nil {
return fmt.Errorf("failed to set VNet for pool %s: %w", poolName, err)
}
Expand Down
2 changes: 1 addition & 1 deletion internal/proxmox/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ type Service interface {
// Networking
GetRouterType(router VM) (string, error)
ConfigurePodRouter(podNumber int, node string, vmid int, routerType string) error
SetPodVnet(poolName string, vnetName string) error
SetPodVnet(poolName string, vnetName string, routerVMID int) error
GetUsedVNets() ([]VNet, error)
CreateTemplatePool(creator string, name string, addRouter bool, vms []VM) error

Expand Down