workspace status update api

This commit is contained in:
rushtehrani
2020-05-04 20:06:05 -07:00
parent 51699159c5
commit ab75bb1254
2 changed files with 23 additions and 13 deletions

View File

@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
sq "github.com/Masterminds/squirrel" sq "github.com/Masterminds/squirrel"
"github.com/asaskevich/govalidator" "github.com/asaskevich/govalidator"
"github.com/lib/pq"
"github.com/onepanelio/core/pkg/util" "github.com/onepanelio/core/pkg/util"
"github.com/onepanelio/core/pkg/util/ptr" "github.com/onepanelio/core/pkg/util/ptr"
"google.golang.org/grpc/codes" "google.golang.org/grpc/codes"
@@ -103,13 +104,28 @@ func (c *Client) CreateWorkspace(namespace string, workspace *Workspace) (*Works
} }
func (c *Client) UpdateWorkspaceStatus(namespace, uid string, status *WorkspaceStatus) (err error) { func (c *Client) UpdateWorkspaceStatus(namespace, uid string, status *WorkspaceStatus) (err error) {
fieldMap := sq.Eq{
"phase": status.Phase,
}
switch status.Phase {
case WorkspaceStarted:
fieldMap["paused_at"] = pq.NullTime{}
fieldMap["started_at"] = time.Now().UTC()
break
case WorkspacePausing:
fieldMap["started_at"] = pq.NullTime{}
fieldMap["paused_at"] = time.Now().UTC()
break
case WorkspaceTerminating:
fieldMap["started_at"] = pq.NullTime{}
fieldMap["paused_at"] = pq.NullTime{}
fieldMap["terminated_at"] = time.Now().UTC()
break
}
_, err = sb.Update("workspaces"). _, err = sb.Update("workspaces").
SetMap(sq.Eq{ SetMap(fieldMap).
"phase": status.Phase,
"started_at": status.StartedAt,
"paused_at": status.PausedAt,
"terminated_at": status.TerminatedAt,
}).
Where(sq.Eq{ Where(sq.Eq{
"namespace": namespace, "namespace": namespace,
"uid": uid, "uid": uid,

View File

@@ -67,14 +67,8 @@ func (s *WorkspaceServer) UpdateWorkspaceStatus(ctx context.Context, req *api.Up
return &empty.Empty{}, err return &empty.Empty{}, err
} }
started, _ := time.Parse(TimeLayout, req.Status.StartedAt)
pausedAt, _ := time.Parse(TimeLayout, req.Status.PausedAt)
terminatedAt, _ := time.Parse(TimeLayout, req.Status.TerminatingAt)
status := &v1.WorkspaceStatus{ status := &v1.WorkspaceStatus{
Phase: v1.WorkspacePhase(req.Status.Phase), Phase: v1.WorkspacePhase(req.Status.Phase),
StartedAt: &started,
PausedAt: &pausedAt,
TerminatedAt: &terminatedAt,
} }
err = client.UpdateWorkspaceStatus(req.Namespace, req.Uid, status) err = client.UpdateWorkspaceStatus(req.Namespace, req.Uid, status)