0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-01 11:02:59 +00:00

fix(tasks): fix UPID (task id) parsing error (#591)

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
Pavel Boldyrev 2023-09-27 21:46:45 -04:00 committed by GitHub
parent 222f9eb4fa
commit 294a9daa87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 12 deletions

View File

@ -28,8 +28,8 @@ type GetTaskStatusResponseData struct {
// TaskID contains the components of a PVE task ID.
type TaskID struct {
NodeName string
PID int
PStart int
PID int64
PStart int64
StartTime time.Time
Type string
ID string
@ -51,17 +51,17 @@ func ParseTaskID(taskID string) (TaskID, error) {
return TaskID{}, fmt.Errorf("missing node name in task ID: %s", taskID)
}
pid, err := strconv.ParseInt(parts[2], 16, 32)
pid, err := strconv.ParseInt(parts[2], 16, 64)
if err != nil {
return TaskID{}, fmt.Errorf("error parsing task ID: %w", err)
}
pstart, err := strconv.ParseInt(parts[3], 16, 32)
pstart, err := strconv.ParseInt(parts[3], 16, 64)
if err != nil {
return TaskID{}, fmt.Errorf("error parsing pstart in task ID: %q: %w", taskID, err)
}
stime, err := strconv.ParseInt(parts[4], 16, 32)
stime, err := strconv.ParseInt(parts[4], 16, 64)
if err != nil {
return TaskID{}, fmt.Errorf("error parsing start time in task ID: %q: %w", taskID, err)
}
@ -76,8 +76,8 @@ func ParseTaskID(taskID string) (TaskID, error) {
return TaskID{
NodeName: parts[1],
PID: int(pid),
PStart: int(pstart),
PID: pid,
PStart: pstart,
StartTime: time.Unix(stime, 0).UTC(),
Type: parts[5],
ID: parts[6],

View File

@ -17,10 +17,12 @@ import (
func TestParseTaskID(t *testing.T) {
t.Parallel()
stime, err := time.Parse(time.RFC3339, "2023-08-30T21:28:16-04:00")
require.NoError(t, err)
parseTime := func(s string) time.Time {
stime, err := time.Parse(time.RFC3339, s)
require.NoError(t, err)
stime = stime.UTC()
return stime.UTC()
}
tests := []struct {
name string
@ -35,7 +37,7 @@ func TestParseTaskID(t *testing.T) {
NodeName: "pve",
PID: 400563,
PStart: 17540764,
StartTime: stime,
StartTime: parseTime("2023-08-30T21:28:16-04:00"),
Type: "imgcopy",
ID: "",
User: "root@pam",
@ -48,12 +50,25 @@ func TestParseTaskID(t *testing.T) {
NodeName: "pve",
PID: 400563,
PStart: 17540764,
StartTime: stime,
StartTime: parseTime("2023-08-30T21:28:16-04:00"),
Type: "qmcreate",
ID: "101",
User: "root@pam",
},
},
{
name: "large pid",
taskID: "UPID:pve-srv:0012D68C:8206F38C:65144CB7:qmcreate:501:root@pam:",
want: TaskID{
NodeName: "pve-srv",
PID: 1234572,
PStart: 2181493644,
StartTime: parseTime("2023-09-27T15:39:35Z"),
Type: "qmcreate",
ID: "501",
User: "root@pam",
},
},
{
name: "missing node",
taskID: "UPID::00061CB3:010BA69C:64EFECB0:qmcreate:101:root@pam:",