client: Make GetRawInstanceNVRAMGUIDVar return attributes

Signed-off-by: Benjamin Somers <benjamin.somers@imt-atlantique.fr>
This commit is contained in:
Benjamin Somers 2026-07-30 22:37:48 +00:00 committed by Stéphane Graber
parent a89084e2de
commit bfe338acee
No known key found for this signature in database
GPG Key ID: C638974D64792D67
3 changed files with 16 additions and 6 deletions

View File

@ -3385,17 +3385,27 @@ func (r *ProtocolIncus) GetInstanceNVRAMGUID(name string, guid string) (map[stri
}
// GetRawInstanceNVRAMGUIDVar gets raw OVMF variables from an instance.
func (r *ProtocolIncus) GetRawInstanceNVRAMGUIDVar(name string, guid string, varName string) ([]byte, error) {
func (r *ProtocolIncus) GetRawInstanceNVRAMGUIDVar(name string, guid string, varName string) ([]byte, uint32, error) {
if !r.HasExtension("instance_nvram") {
return nil, errors.New(`The server is missing the required "instance_nvram" API extension`)
return nil, 0, errors.New(`The server is missing the required "instance_nvram" API extension`)
}
resp, err := r.getInstanceNVRAM(name, guid, varName, "application/octet-stream")
if err != nil {
return nil, err
return nil, 0, err
}
return io.ReadAll(resp.Body)
attributes, err := strconv.ParseUint(resp.Header.Get("X-Incus-attributes"), 10, 32)
if err != nil {
return nil, 0, err
}
data, err := io.ReadAll(resp.Body)
if err != nil {
return nil, 0, err
}
return data, uint32(attributes), err
}
// GetInstanceNVRAMGUIDVar gets interpreted OVMF variables from an instance.

View File

@ -181,7 +181,7 @@ type InstanceServer interface {
RepairInstance(name string, repair api.InstanceDebugRepairPost) (err error)
GetInstanceNVRAM(name string) (vars map[string]map[string]*api.InstanceNVRAMVariable, err error)
GetInstanceNVRAMGUID(name string, guid string) (vars map[string]*api.InstanceNVRAMVariable, err error)
GetRawInstanceNVRAMGUIDVar(name string, guid string, varName string) (resp []byte, err error)
GetRawInstanceNVRAMGUIDVar(name string, guid string, varName string) (resp []byte, attributes uint32, err error)
GetInstanceNVRAMGUIDVar(name string, guid string, varName string) (resp *api.InstanceNVRAMVariable, ETag string, err error)
DeleteInstanceNVRAMGUIDVar(name string, guid string, varName string) error
UpdateRawInstanceNVRAMGUIDVar(name string, guid string, varName string, data []byte, attributes uint32, timestamp int64) error

View File

@ -623,7 +623,7 @@ func (c *cmdLowLevelNVRAMGet) run(cmd *cobra.Command, args []string) error {
}
if c.flagRaw {
resp, err := d.GetRawInstanceNVRAMGUIDVar(instanceName, guid, varName)
resp, _, err := d.GetRawInstanceNVRAMGUIDVar(instanceName, guid, varName)
if err != nil {
return fmt.Errorf(i18n.G("Failed to get instance UEFI variable: %w"), err)
}