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 .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/cmd/windsor/main.go",
"args": ["init", "local"]
"args": ["init", "local", "--vm-driver", "colima"]
},
{
"name": "Windsor Up",
Expand Down
32 changes: 16 additions & 16 deletions api/v1alpha1/cluster/cluster_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ type ClusterConfig struct {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
} `yaml:"controlplanes,omitempty"`
Workers struct {
Count *int `yaml:"count,omitempty"`
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
} `yaml:"workers,omitempty"`
}

Expand All @@ -25,7 +25,7 @@ type NodeConfig struct {
Hostname *string `yaml:"hostname"`
Node *string `yaml:"node,omitempty"`
Endpoint *string `yaml:"endpoint,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}

// Merge performs a deep merge of the current ClusterConfig with another ClusterConfig.
Expand Down Expand Up @@ -66,9 +66,9 @@ func (base *ClusterConfig) Merge(overlay *ClusterConfig) {
base.Workers.Nodes[key] = node
}
}
if overlay.Workers.NodePorts != nil {
base.Workers.NodePorts = make([]string, len(overlay.Workers.NodePorts))
copy(base.Workers.NodePorts, overlay.Workers.NodePorts)
if overlay.Workers.HostPorts != nil {
base.Workers.HostPorts = make([]string, len(overlay.Workers.HostPorts))
copy(base.Workers.HostPorts, overlay.Workers.HostPorts)
}
}

Expand All @@ -84,23 +84,23 @@ func (c *ClusterConfig) Copy() *ClusterConfig {
Hostname: node.Hostname,
Node: node.Node,
Endpoint: node.Endpoint,
NodePorts: append([]string{}, node.NodePorts...), // Copy NodePorts for each node
HostPorts: append([]string{}, node.HostPorts...), // Copy HostPorts for each node
}
}
controlPlanesNodePortsCopy := make([]string, len(c.ControlPlanes.NodePorts))
copy(controlPlanesNodePortsCopy, c.ControlPlanes.NodePorts)
controlPlanesHostPortsCopy := make([]string, len(c.ControlPlanes.HostPorts))
copy(controlPlanesHostPortsCopy, c.ControlPlanes.HostPorts)

workersNodesCopy := make(map[string]NodeConfig, len(c.Workers.Nodes))
for key, node := range c.Workers.Nodes {
workersNodesCopy[key] = NodeConfig{
Hostname: node.Hostname,
Node: node.Node,
Endpoint: node.Endpoint,
NodePorts: append([]string{}, node.NodePorts...), // Copy NodePorts for each node
HostPorts: append([]string{}, node.HostPorts...), // Copy HostPorts for each node
}
}
workersNodePortsCopy := make([]string, len(c.Workers.NodePorts))
copy(workersNodePortsCopy, c.Workers.NodePorts)
workersHostPortsCopy := make([]string, len(c.Workers.HostPorts))
copy(workersHostPortsCopy, c.Workers.HostPorts)

return &ClusterConfig{
Enabled: c.Enabled,
Expand All @@ -110,26 +110,26 @@ func (c *ClusterConfig) Copy() *ClusterConfig {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: c.ControlPlanes.Count,
CPU: c.ControlPlanes.CPU,
Memory: c.ControlPlanes.Memory,
Nodes: controlPlanesNodesCopy,
NodePorts: controlPlanesNodePortsCopy,
HostPorts: controlPlanesHostPortsCopy,
},
Workers: struct {
Count *int `yaml:"count,omitempty"`
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: c.Workers.Count,
CPU: c.Workers.CPU,
Memory: c.Workers.Memory,
Nodes: workersNodesCopy,
NodePorts: workersNodePortsCopy,
HostPorts: workersHostPortsCopy,
},
}
}
58 changes: 29 additions & 29 deletions api/v1alpha1/cluster/cluster_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func TestClusterConfig_Merge(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: ptrInt(3),
CPU: ptrInt(4),
Expand All @@ -41,15 +41,15 @@ func TestClusterConfig_Merge(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: ptrInt(5),
CPU: ptrInt(2),
Memory: ptrInt(4096),
Nodes: map[string]NodeConfig{
"worker1": {Hostname: ptrString("base-worker1")},
},
NodePorts: []string{"8080", "9090"},
HostPorts: []string{"8080", "9090"},
},
}

Expand All @@ -61,7 +61,7 @@ func TestClusterConfig_Merge(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: ptrInt(1),
CPU: ptrInt(2),
Expand All @@ -75,15 +75,15 @@ func TestClusterConfig_Merge(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: ptrInt(3),
CPU: ptrInt(1),
Memory: ptrInt(2048),
Nodes: map[string]NodeConfig{
"worker2": {Hostname: ptrString("overlay-worker2")},
},
NodePorts: []string{"8082", "9092"},
HostPorts: []string{"8082", "9092"},
},
}

Expand All @@ -95,8 +95,8 @@ func TestClusterConfig_Merge(t *testing.T) {
if base.Driver == nil || *base.Driver != "overlay-driver" {
t.Errorf("Driver mismatch: expected 'overlay-driver', got '%s'", *base.Driver)
}
if len(base.Workers.NodePorts) != 2 || base.Workers.NodePorts[0] != "8082" || base.Workers.NodePorts[1] != "9092" {
t.Errorf("NodePorts mismatch: expected ['8082', '9092'], got %v", base.Workers.NodePorts)
if len(base.Workers.HostPorts) != 2 || base.Workers.HostPorts[0] != "8082" || base.Workers.HostPorts[1] != "9092" {
t.Errorf("HostPorts mismatch: expected ['8082', '9092'], got %v", base.Workers.HostPorts)
}
if base.ControlPlanes.Count == nil || *base.ControlPlanes.Count != 1 {
t.Errorf("ControlPlanes Count mismatch: expected 1, got %v", *base.ControlPlanes.Count)
Expand Down Expand Up @@ -133,26 +133,26 @@ func TestClusterConfig_Merge(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: nil,
CPU: nil,
Memory: nil,
Nodes: nil,
NodePorts: nil,
HostPorts: nil,
},
Workers: struct {
Count *int `yaml:"count,omitempty"`
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: nil,
CPU: nil,
Memory: nil,
Nodes: nil,
NodePorts: nil,
HostPorts: nil,
},
}

Expand All @@ -164,26 +164,26 @@ func TestClusterConfig_Merge(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: nil,
CPU: nil,
Memory: nil,
Nodes: nil,
NodePorts: nil,
HostPorts: nil,
},
Workers: struct {
Count *int `yaml:"count,omitempty"`
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: nil,
CPU: nil,
Memory: nil,
Nodes: nil,
NodePorts: nil,
HostPorts: nil,
},
}

Expand All @@ -195,8 +195,8 @@ func TestClusterConfig_Merge(t *testing.T) {
if base.Driver != nil {
t.Errorf("Driver mismatch: expected nil, got '%s'", *base.Driver)
}
if base.Workers.NodePorts != nil {
t.Errorf("NodePorts mismatch: expected nil, got %v", base.Workers.NodePorts)
if base.Workers.HostPorts != nil {
t.Errorf("HostPorts mismatch: expected nil, got %v", base.Workers.HostPorts)
}
if base.ControlPlanes.Count != nil {
t.Errorf("ControlPlanes Count mismatch: expected nil, got %v", *base.ControlPlanes.Count)
Expand Down Expand Up @@ -235,30 +235,30 @@ func TestClusterConfig_Copy(t *testing.T) {
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: ptrInt(3),
CPU: ptrInt(4),
Memory: ptrInt(8192),
Nodes: map[string]NodeConfig{
"node1": {Hostname: ptrString("original-node1")},
},
NodePorts: []string{"1000:1000/tcp", "2000:2000/tcp"},
HostPorts: []string{"1000:1000/tcp", "2000:2000/tcp"},
},
Workers: struct {
Count *int `yaml:"count,omitempty"`
CPU *int `yaml:"cpu,omitempty"`
Memory *int `yaml:"memory,omitempty"`
Nodes map[string]NodeConfig `yaml:"nodes,omitempty"`
NodePorts []string `yaml:"nodeports,omitempty"`
HostPorts []string `yaml:"hostports,omitempty"`
}{
Count: ptrInt(5),
CPU: ptrInt(2),
Memory: ptrInt(4096),
Nodes: map[string]NodeConfig{
"worker1": {Hostname: ptrString("original-worker1")},
},
NodePorts: []string{"3000:3000/tcp", "4000:4000/tcp"},
HostPorts: []string{"3000:3000/tcp", "4000:4000/tcp"},
},
}

Expand All @@ -270,12 +270,12 @@ func TestClusterConfig_Copy(t *testing.T) {
if original.Driver == nil || copy.Driver == nil || *original.Driver != *copy.Driver {
t.Errorf("Driver mismatch: expected %v, got %v", *original.Driver, *copy.Driver)
}
if len(original.Workers.NodePorts) != len(copy.Workers.NodePorts) {
t.Errorf("Workers NodePorts length mismatch: expected %d, got %d", len(original.Workers.NodePorts), len(copy.Workers.NodePorts))
if len(original.Workers.HostPorts) != len(copy.Workers.HostPorts) {
t.Errorf("Workers HostPorts length mismatch: expected %d, got %d", len(original.Workers.HostPorts), len(copy.Workers.HostPorts))
}
for i, port := range original.Workers.NodePorts {
if port != copy.Workers.NodePorts[i] {
t.Errorf("Workers NodePorts mismatch at index %d: expected %v, got %v", i, port, copy.Workers.NodePorts[i])
for i, port := range original.Workers.HostPorts {
if port != copy.Workers.HostPorts[i] {
t.Errorf("Workers HostPorts mismatch at index %d: expected %v, got %v", i, port, copy.Workers.HostPorts[i])
}
}
if original.Workers.Count == nil || copy.Workers.Count == nil || *original.Workers.Count != *copy.Workers.Count {
Expand All @@ -296,8 +296,8 @@ func TestClusterConfig_Copy(t *testing.T) {
}
}

if len(original.Workers.NodePorts) != len(copy.Workers.NodePorts) || original.Workers.NodePorts[0] != copy.Workers.NodePorts[0] || original.Workers.NodePorts[1] != copy.Workers.NodePorts[1] {
t.Errorf("NodePorts mismatch: expected %v, got %v", original.Workers.NodePorts, copy.Workers.NodePorts)
if len(original.Workers.HostPorts) != len(copy.Workers.HostPorts) || original.Workers.HostPorts[0] != copy.Workers.HostPorts[0] || original.Workers.HostPorts[1] != copy.Workers.HostPorts[1] {
t.Errorf("HostPorts mismatch: expected %v, got %v", original.Workers.HostPorts, copy.Workers.HostPorts)
}
if original.ControlPlanes.Count == nil || copy.ControlPlanes.Count == nil || *original.ControlPlanes.Count != *copy.ControlPlanes.Count {
t.Errorf("ControlPlanes Count mismatch: expected %v, got %v", *original.ControlPlanes.Count, *copy.ControlPlanes.Count)
Expand Down
7 changes: 6 additions & 1 deletion api/v1alpha1/dns/dns_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ package dns

// DNSConfig represents the DNS configuration
type DNSConfig struct {
Enabled *bool `yaml:"enabled"`
Enabled *bool `yaml:"enabled,omitempty"`
Domain *string `yaml:"domain,omitempty"`
Address *string `yaml:"address,omitempty"`
Forward []string `yaml:"forward,omitempty"`
Records []string `yaml:"records,omitempty"`
}

Expand All @@ -19,6 +20,9 @@ func (base *DNSConfig) Merge(overlay *DNSConfig) {
if overlay.Address != nil {
base.Address = overlay.Address
}
if overlay.Forward != nil {
base.Forward = overlay.Forward
}
if overlay.Records != nil {
base.Records = overlay.Records
}
Expand All @@ -33,6 +37,7 @@ func (c *DNSConfig) Copy() *DNSConfig {
Enabled: c.Enabled,
Domain: c.Domain,
Address: c.Address,
Forward: c.Forward,
Records: c.Records,
}
}
Loading
Loading