mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-01 19:12: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.
|
// TaskID contains the components of a PVE task ID.
|
||||||
type TaskID struct {
|
type TaskID struct {
|
||||||
NodeName string
|
NodeName string
|
||||||
PID int
|
PID int64
|
||||||
PStart int
|
PStart int64
|
||||||
StartTime time.Time
|
StartTime time.Time
|
||||||
Type string
|
Type string
|
||||||
ID 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)
|
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 {
|
if err != nil {
|
||||||
return TaskID{}, fmt.Errorf("error parsing task ID: %w", err)
|
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 {
|
if err != nil {
|
||||||
return TaskID{}, fmt.Errorf("error parsing pstart in task ID: %q: %w", taskID, err)
|
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 {
|
if err != nil {
|
||||||
return TaskID{}, fmt.Errorf("error parsing start time in task ID: %q: %w", taskID, err)
|
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{
|
return TaskID{
|
||||||
NodeName: parts[1],
|
NodeName: parts[1],
|
||||||
PID: int(pid),
|
PID: pid,
|
||||||
PStart: int(pstart),
|
PStart: pstart,
|
||||||
StartTime: time.Unix(stime, 0).UTC(),
|
StartTime: time.Unix(stime, 0).UTC(),
|
||||||
Type: parts[5],
|
Type: parts[5],
|
||||||
ID: parts[6],
|
ID: parts[6],
|
||||||
|
@ -17,10 +17,12 @@ import (
|
|||||||
func TestParseTaskID(t *testing.T) {
|
func TestParseTaskID(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
stime, err := time.Parse(time.RFC3339, "2023-08-30T21:28:16-04:00")
|
parseTime := func(s string) time.Time {
|
||||||
require.NoError(t, err)
|
stime, err := time.Parse(time.RFC3339, s)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
stime = stime.UTC()
|
return stime.UTC()
|
||||||
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
@ -35,7 +37,7 @@ func TestParseTaskID(t *testing.T) {
|
|||||||
NodeName: "pve",
|
NodeName: "pve",
|
||||||
PID: 400563,
|
PID: 400563,
|
||||||
PStart: 17540764,
|
PStart: 17540764,
|
||||||
StartTime: stime,
|
StartTime: parseTime("2023-08-30T21:28:16-04:00"),
|
||||||
Type: "imgcopy",
|
Type: "imgcopy",
|
||||||
ID: "",
|
ID: "",
|
||||||
User: "root@pam",
|
User: "root@pam",
|
||||||
@ -48,12 +50,25 @@ func TestParseTaskID(t *testing.T) {
|
|||||||
NodeName: "pve",
|
NodeName: "pve",
|
||||||
PID: 400563,
|
PID: 400563,
|
||||||
PStart: 17540764,
|
PStart: 17540764,
|
||||||
StartTime: stime,
|
StartTime: parseTime("2023-08-30T21:28:16-04:00"),
|
||||||
Type: "qmcreate",
|
Type: "qmcreate",
|
||||||
ID: "101",
|
ID: "101",
|
||||||
User: "root@pam",
|
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",
|
name: "missing node",
|
||||||
taskID: "UPID::00061CB3:010BA69C:64EFECB0:qmcreate:101:root@pam:",
|
taskID: "UPID::00061CB3:010BA69C:64EFECB0:qmcreate:101:root@pam:",
|
||||||
|
Loading…
Reference in New Issue
Block a user