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:
parent
222f9eb4fa
commit
294a9daa87
@ -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],
|
||||
|
@ -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:",
|
||||
|
Loading…
Reference in New Issue
Block a user