feat: add memory
Some checks failed
CI / build (push) Failing after 3m23s
CI / lint (push) Failing after 2m50s
CI / pkl-validate (push) Successful in 11s
CI / integration-tests (push) Has been skipped
CI / conformance-tests (latest) (push) Has been skipped

This commit is contained in:
2026-02-03 21:52:55 +01:00
parent e93eecc143
commit ca99733c9c
7 changed files with 20 additions and 2 deletions

View File

@@ -124,7 +124,7 @@ func (p *Plugin) Create(ctx context.Context, req *resource.CreateRequest) (*reso
client := &http.Client{}
arguments := "vmid=" + props.VMID + "&ostemplate=" + props.OSTemplate + "&hostname=" + props.Hostname + "&cores=" + strconv.Itoa(props.Cores)
arguments := "vmid=" + props.VMID + "&ostemplate=" + props.OSTemplate + "&hostname=" + props.Hostname + "&cores=" + strconv.Itoa(props.Cores) + "&memory=" + strconv.Itoa(props.Memory)
if props.Description != "" {
arguments += "&description=" + props.Description
}
@@ -212,6 +212,7 @@ func (p *Plugin) Read(ctx context.Context, req *resource.ReadRequest) (*resource
Hostname: lxcdata.Hostname,
Description: lxcdata.Description,
Cores: lxcdata.Cores,
Memory: lxcdata.Memory,
}
propsJSON, err := json.Marshal(properties)
@@ -302,7 +303,7 @@ func (p *Plugin) Update(ctx context.Context, req *resource.UpdateRequest) (*reso
client := &http.Client{}
url := config.URL + "/api2/json/nodes/" + config.NODE + "/lxc/" + desir.VMID + "/config"
arguments := "vmid=" + desir.VMID + "&hostname=" + desir.Hostname + "&description=" + desir.Description + "&cores=" + strconv.Itoa(desir.Cores)
arguments := "vmid=" + desir.VMID + "&hostname=" + desir.Hostname + "&description=" + desir.Description + "&cores=" + strconv.Itoa(desir.Cores) + "&memory=" + strconv.Itoa(desir.Memory)
argumentBuffer := bytes.NewBuffer([]byte(arguments))
request, err := http.NewRequest("PUT", url, argumentBuffer)

View File

@@ -34,6 +34,7 @@ func TestCreate(t *testing.T) {
"description": "none",
"ostemplate": "local:vztmpl/alpine-3.22-default_20250617_amd64.tar.xz",
"cores": 1,
"memory": 512,
}
propertiesJSON, err := json.Marshal(properties)
@@ -110,6 +111,8 @@ func TestRead(t *testing.T) {
require.Equal(t, strconv.Itoa(120), props["vmid"], "vmid should match")
const core_num float64 = 1
require.Equal(t, core_num, props["cores"], "cores should match")
const mem_num float64 = 192
require.Equal(t, mem_num, props["memory"], "memory should match")
}
func TestUpdate(t *testing.T) {
@@ -122,6 +125,7 @@ func TestUpdate(t *testing.T) {
"description": "none",
"ostemplate": "local:vztmpl/alpine-3.22-default_20250617_amd64.tar.xz",
"cores": 1,
"memory": 512,
})
desiredProperties, _ := json.Marshal(map[string]any{
@@ -130,6 +134,7 @@ func TestUpdate(t *testing.T) {
"description": "none",
"ostemplate": "local:vztmpl/alpine-3.22-default_20250617_amd64.tar.xz",
"cores": 2,
"memory": 1024,
})
req := &resource.UpdateRequest{
@@ -158,6 +163,8 @@ func TestUpdate(t *testing.T) {
require.Equal(t, "testlxc-updated", props["hostname"], "hostname should have changed")
const core_num float64 = 2
require.Equal(t, core_num, props["cores"], "cores should have changed")
const mem_num float64 = 1024
require.Equal(t, mem_num, props["memory"], "memory should have changed")
}
func TestList(t *testing.T) {

View File

@@ -37,4 +37,7 @@ class LXC extends formae.Resource {
@formae.FieldHint {}
cores: Int
@formae.FieldHint {}
memory: Int
}

View File

@@ -31,5 +31,7 @@ forma {
hostname = "test-lxc"
description = "some other description"
ostemplate = "local:vztmpl/alpine-3.22-default_20250617_amd64.tar.xz"
cores = 1
memory = 512
}
}

View File

@@ -31,5 +31,7 @@ forma {
hostname = "test-lxc"
description = "some other description"
ostemplate = "local:vztmpl/alpine-3.22-default_20250617_amd64.tar.xz"
cores = 2
memory = 1024
}
}

View File

@@ -33,5 +33,7 @@ forma {
hostname = "test-lxc"
description = "no description provided"
ostemplate = "local:vztmpl/alpine-3.22-default_20250617_amd64.tar.xz"
cores = 1
memory = 512
}
}

View File

@@ -13,6 +13,7 @@ type LXCProperties struct {
Description string `json:"description,omitempty"`
OSTemplate string `json:"ostemplate,omitempty"`
Cores int `json:"cores"`
Memory int `json:"memory"`
}
type ReadRequest struct {