Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions runner/component/imagebuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ func (ibc *imagebuilderComponentImpl) Build(ctx context.Context, req ctypes.Imag
imagePath := path.Join(ibc.config.Space.DockerRegBase, imageName)
cluster, err := ibc.GetCluster(ctx, req.ClusterID)
if err != nil {
slog.ErrorContext(ctx, "failed to get cluster by id", slog.String("cluster id", req.ClusterID), slog.Any("error", err))
return fmt.Errorf("failed to get cluster by id: %w", err)
}

Expand Down Expand Up @@ -134,7 +135,7 @@ func (ibc *imagebuilderComponentImpl) Build(ctx context.Context, req ctypes.Imag
func (ibc *imagebuilderComponentImpl) checkAndRemoveExistingWorkflow(ctx context.Context, cluster *cluster.Cluster,
namespace, createWorkflowName string) error {
checkWft, err := cluster.ArgoClient.ArgoprojV1alpha1().Workflows(namespace).Get(ctx, createWorkflowName, metav1.GetOptions{})
slog.Debug("get workflow for space image build", slog.Any("checkWft", checkWft), slog.Any("error", err))
slog.DebugContext(ctx, "get workflow for space image build", slog.Any("checkWft", checkWft), slog.Any("error", err))
if err != nil {
if statusErr, ok := err.(*k8serrors.StatusError); ok {
//{Status: "Failure", Message: "workflows.argoproj.io \"xxxx\" not found", Reason: "NotFound", Code: 404}}
Expand Down Expand Up @@ -477,13 +478,13 @@ func createOrUpdateConfigMap(ctx context.Context, client kubernetes.Interface, c

func (ibc *imagebuilderComponentImpl) newPersistentVolumeClaim(ctx context.Context, cluster *cluster.Cluster, pvcName string) error {
// Check if it already exists
slog.Info("check pvc for imagebuilder", slog.String("pvc", pvcName), slog.String("storageClass", cluster.StorageClass), slog.Any("storage len", len(cluster.StorageClass)))
slog.InfoContext(ctx, "check pvc for imagebuilder", slog.String("pvc", pvcName), slog.String("storageClass", cluster.StorageClass), slog.Any("storage len", len(cluster.StorageClass)))
_, err := cluster.Client.CoreV1().PersistentVolumeClaims(ibc.config.Cluster.SpaceNamespace).Get(ctx, pvcName, metav1.GetOptions{})
if err == nil {
return nil
}

slog.Info("create pvc for imagebuilder", slog.String("pvc", pvcName), slog.String("storageClass", cluster.StorageClass), slog.Any("storage len", len(cluster.StorageClass)))
slog.InfoContext(ctx, "create pvc for imagebuilder", slog.String("pvc", pvcName), slog.String("storageClass", cluster.StorageClass), slog.Any("storage len", len(cluster.StorageClass)))
storage, err := resource.ParseQuantity("50Gi")
if err != nil {
return err
Expand Down
16 changes: 8 additions & 8 deletions runner/component/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ func (wc *workFlowComponentImpl) CreateWorkflow(ctx context.Context, req types.A
// create workflow in argo
awf := generateWorkflow(req, wc.config)
wc.setLabels(argowf, awf)
slog.Info("create workflow in runner", slog.Any("namespace", namespace), slog.Any("awf.name", awf.Name),
slog.InfoContext(ctx, "create workflow in runner", slog.Any("namespace", namespace), slog.Any("awf.name", awf.Name),
slog.Any("result-url", argowf.ResultURL), slog.Any("task-type", argowf.TaskType))
_, err = cluster.ArgoClient.ArgoprojV1alpha1().Workflows(namespace).Create(ctx, awf, v1.CreateOptions{})
if err != nil {
Expand All @@ -115,7 +115,7 @@ func (wc *workFlowComponentImpl) CreateWorkflow(ctx context.Context, req types.A

wf, err = wc.wf.CreateWorkFlow(ctx, *argowf)
if err != nil {
slog.Error("failed to create workflow in db and verify if workflow exist later", slog.Any("task-id", argowf.TaskId), slog.Any("error", err))
slog.ErrorContext(ctx, "failed to create workflow in db and verify if workflow exist later", slog.Any("task-id", argowf.TaskId), slog.Any("error", err))
wfObj, findErr := wc.wf.FindByTaskID(ctx, argowf.TaskId)
if findErr != nil {
return nil, fmt.Errorf("failed to check workflow %s in db for create action, error: %w", argowf.TaskId, findErr)
Expand Down Expand Up @@ -145,7 +145,7 @@ func (wc *workFlowComponentImpl) DeleteWorkflow(ctx context.Context, req *types.
}
err = cluster.ArgoClient.ArgoprojV1alpha1().Workflows(req.Namespace).Delete(ctx, req.TaskID, v1.DeleteOptions{})
if err != nil {
slog.Warn("Error deleting argo workflow", slog.Any("error", err))
slog.WarnContext(ctx, "Error deleting argo workflow", slog.Any("error", err))
}
return nil
}
Expand All @@ -164,12 +164,12 @@ func (wc *workFlowComponentImpl) GetWorkflow(ctx context.Context, id int64, user
// Update workflow
func (wc *workFlowComponentImpl) UpdateWorkflow(ctx context.Context, update *v1alpha1.Workflow, cluster *cluster.Cluster) (*database.ArgoWorkflow, error) {
oldwf, err := wc.wf.FindByTaskID(ctx, update.Name)
slog.Info("get-UpdateWorkflow-from-db", slog.Any("oldwf.TaskId", oldwf.TaskId), slog.Any("result-url", oldwf.ResultURL))
slog.InfoContext(ctx, "get-UpdateWorkflow-from-db", slog.Any("oldwf.TaskId", oldwf.TaskId), slog.Any("result-url", oldwf.ResultURL))
if errors.Is(err, sql.ErrNoRows) {
oldwf = *wc.getWorkflowFromLabels(ctx, update)
wf, err := wc.wf.CreateWorkFlow(ctx, oldwf)
if err != nil {
slog.Error("failed to create workflow in db", slog.Any("error", err))
slog.ErrorContext(ctx, "failed to create workflow in db", slog.Any("error", err))
return nil, fmt.Errorf("failed to create workflow in db: %v", err)
}
oldwf = *wf
Expand Down Expand Up @@ -203,7 +203,7 @@ func (wc *workFlowComponentImpl) UpdateWorkflow(ctx context.Context, update *v1a
//podName := fmt.Sprintf("%s-%s", oldwf.TaskId, oldwf.ClusterID)
logs, err := common.GetPodLog(ctx, cluster.Client, update.Name, update.Namespace, "main")
if err != nil {
slog.Error("failed to get pod log", slog.Any("error", err), slog.Any("pod name", update.Name))
slog.ErrorContext(ctx, "failed to get pod log", slog.Any("error", err), slog.Any("pod name", update.Name))
} else {
if len(logs) > 0 {
oldwf.Reason = string(logs)
Expand All @@ -213,7 +213,7 @@ func (wc *workFlowComponentImpl) UpdateWorkflow(ctx context.Context, update *v1a
}
}

slog.Info("UpdateWorkflow-report", slog.Any("name", oldwf.TaskId), slog.Any("result-url", oldwf.ResultURL))
slog.InfoContext(ctx, "UpdateWorkflow-report", slog.Any("name", oldwf.TaskId), slog.Any("result-url", oldwf.ResultURL))
wc.addKServiceWithEvent(ctx, types.RunnerWorkflowChange, &oldwf)
if lastStatus != oldwf.Status {
wc.reportWorFlowLog(types.WorkflowUpdated.String(), &oldwf)
Expand All @@ -233,7 +233,7 @@ func (wc *workFlowComponentImpl) DeleteWorkflowInargo(ctx context.Context, delet
if wf.Status == v1alpha1.WorkflowPending || wf.Status == v1alpha1.WorkflowRunning {
wf.Status = v1alpha1.WorkflowFailed
wf.Reason = "deleted by admin"
slog.Info("DeleteWorkflowInargo-report", slog.Any("name", wf.TaskId), slog.Any("result-url", wf.ResultURL))
slog.InfoContext(ctx, "DeleteWorkflowInargo-report", slog.Any("name", wf.TaskId), slog.Any("result-url", wf.ResultURL))
_, err = wc.wf.UpdateWorkFlow(ctx, wf)
if err != nil {
return err
Expand Down
5 changes: 3 additions & 2 deletions runner/handler/cluster.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package handler

import (
"github.com/gin-gonic/gin"
"log/slog"
"net/http"

"github.com/gin-gonic/gin"
"opencsg.com/csghub-server/builder/deploy/cluster"
"opencsg.com/csghub-server/common/config"
"opencsg.com/csghub-server/common/types"
Expand Down Expand Up @@ -36,7 +37,7 @@ func (s *ClusterHandler) GetClusterInfoByID(c *gin.Context) {
clusterInfo.StorageClass = cInfo.StorageClass
availabilityStatus, resourceAvaliable, err := s.clusterComponent.GetResourceByID(c.Request.Context(), clusterId)
if err != nil {
slog.Error("fail to get cluster", slog.Any("error", err))
slog.ErrorContext(c.Request.Context(), "fail to get cluster", slog.Any("error", err))
c.JSON(http.StatusNotFound, gin.H{"error": err.Error()})
return
}
Expand Down
12 changes: 8 additions & 4 deletions runner/handler/imagebuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ func NewImagebuilderHandler(
clusterPool *cluster.ClusterPool,
logReporter reporter.LogCollector) (*ImagebuilderHandler, error) {
if clusterPool == nil || len(clusterPool.Clusters) == 0 {
slog.ErrorContext(ctx, "cluster pool is nil")
return nil, errors.New("cluster pool is nil")
}
ibc, err := component.NewImagebuilderComponent(ctx, config, clusterPool, logReporter)
if err != nil {
slog.ErrorContext(ctx, "fail to create imagebuilder component", slog.Any("error", err))
return nil, err
}
return &ImagebuilderHandler{
Expand All @@ -51,13 +53,13 @@ func NewImagebuilderHandler(
func (ibh *ImagebuilderHandler) Build(ctx *gin.Context) {
var req ctypes.ImageBuilderRequest
if err := ctx.ShouldBindJSON(&req); err != nil {
slog.Error("bad params imagebuilder request format", "error", err)
slog.ErrorContext(ctx, "bad params imagebuilder request format", slog.Any("error", err))
ctx.JSON(http.StatusBadRequest, gin.H{"error": "bad params imagebuilder request format:" + err.Error()})
return
}
err := ibh.ibc.Build(ctx.Request.Context(), req)
if err != nil {
slog.Error("fail to image builder", slog.Any("error", err), slog.Any("req", req))
slog.ErrorContext(ctx, "fail to image builder", slog.Any("error", err), slog.Any("req", req))
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "fail to imagebuilder build:" + err.Error()})
return
}
Expand All @@ -68,16 +70,18 @@ func (ibh *ImagebuilderHandler) Build(ctx *gin.Context) {
func (ibh *ImagebuilderHandler) Stop(ctx *gin.Context) {
var req ctypes.ImageBuildStopReq
if err := ctx.ShouldBindJSON(&req); err != nil {
slog.Error("bad params imagebuilder request format", "error", err)
slog.ErrorContext(ctx, "bad params imagebuilder request format", slog.Any("error", err))
ctx.JSON(http.StatusBadRequest, gin.H{"error": "bad params imagebuilder request format:" + err.Error()})
return
}
slog.InfoContext(ctx, "stop image builder", slog.Any("req", req))
err := ibh.ibc.Stop(ctx.Request.Context(), req)
if err != nil {
slog.Error("fail to stop image builder", slog.Any("error", err), slog.Any("deploy_id", req.DeployId))
slog.ErrorContext(ctx, "fail to stop image builder", slog.Any("error", err), slog.Any("deploy_id", req.DeployId))
ctx.JSON(http.StatusInternalServerError, err.Error())
return
}
slog.InfoContext(ctx, "stop image builder success", slog.Any("req", req))

httpbase.OK(ctx, nil)
}
20 changes: 10 additions & 10 deletions runner/handler/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ func (a *ArgoHandler) CreateWorkflow(ctx *gin.Context) {
var req types.ArgoWorkFlowReq
err := ctx.ShouldBindJSON(&req)
if err != nil {
slog.Error("bad order request format", "error", err)
slog.ErrorContext(ctx, "bad order request format", "error", err)
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
wf, err := a.wfc.CreateWorkflow(ctx, req)
if err != nil {
slog.Error("fail to create workflow", slog.Any("error", err), slog.Any("req", req))
slog.ErrorContext(ctx, "fail to create workflow", slog.Any("error", err), slog.Any("req", req))
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
Expand All @@ -73,7 +73,7 @@ func (a *ArgoHandler) ListWorkflows(ctx *gin.Context) {
username := ctx.Query("username")
per, page, err := common.GetPerAndPageFromContext(ctx)
if err != nil {
slog.Error("Bad request format of page and per", slog.Any("error", err))
slog.ErrorContext(ctx, "Bad request format of page and per", slog.Any("error", err))
httpbase.BadRequest(ctx, err.Error())
return
}
Expand All @@ -83,7 +83,7 @@ func (a *ArgoHandler) ListWorkflows(ctx *gin.Context) {
}
wfs, total, err := a.wfc.FindWorkFlows(ctx, username, types.TaskType(taskType), per, page)
if err != nil {
slog.Error("fail to list workflows", slog.Any("error", err))
slog.ErrorContext(ctx, "fail to list workflows", slog.Any("error", err))
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
Expand All @@ -98,17 +98,17 @@ func (a *ArgoHandler) DeleteWorkflow(ctx *gin.Context) {
var req = &types.ArgoWorkFlowDeleteReq{}
err := ctx.BindJSON(req)
if err != nil {
slog.Error("bad request format", "error", err)
slog.ErrorContext(ctx, "bad request format", "error", err)
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
err = a.wfc.DeleteWorkflow(ctx, req)
if err != nil {
slog.Error("failed to delete workflow", slog.Any("error", err), slog.Any("req", req))
slog.ErrorContext(ctx, "failed to delete workflow", slog.Any("error", err), slog.Any("req", req))
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
slog.Info("Deleted argo workflow successfully", slog.String("id", id), slog.Any("taskid", req.TaskID))
slog.InfoContext(ctx, "Deleted argo workflow successfully", slog.String("id", id), slog.Any("taskid", req.TaskID))
httpbase.OK(ctx, nil)
}

Expand All @@ -117,19 +117,19 @@ func (a *ArgoHandler) GetWorkflow(ctx *gin.Context) {
var req = &types.ArgoWorkFlowGetReq{}
err := ctx.BindJSON(req)
if err != nil {
slog.Error("bad request format", "error", err)
slog.ErrorContext(ctx, "bad request format", "error", err)
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
idInt64, err := strconv.ParseInt(id, 10, 64)
if err != nil {
slog.Error("fail to convert id to int64", slog.Any("error", err), slog.Any("id", id))
slog.ErrorContext(ctx, "fail to convert id to int64", slog.Any("error", err), slog.Any("id", id))
ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
wf, err := a.wfc.GetWorkflow(ctx, idInt64, req.Username)
if err != nil {
slog.Error("fail to get workflow", slog.Any("error", err))
slog.ErrorContext(ctx, "fail to get workflow", slog.Any("error", err))
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
Expand Down
4 changes: 2 additions & 2 deletions user/component/access_token.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func NewAccessTokenComponent(config *config.Config) (AccessTokenComponent, error
c.config = config
if err != nil {
newError := fmt.Errorf("fail to create git server,error:%w", err)
slog.Error(newError.Error())
slog.ErrorContext(context.Background(), newError.Error())
return nil, newError
}
return c, nil
Expand Down Expand Up @@ -285,7 +285,7 @@ func (c *accessTokenComponentImpl) createUserToken(ctx context.Context, newToken
// charge 100 credit for create starship token by call accounting service
err = c.presentForNewAccessToken(user)
if err != nil {
slog.Error("fail to charge for new starship user with retry 3 times", slog.Any("user.uuid", user.UUID), slog.Any("err", err))
slog.ErrorContext(ctx, "fail to charge for new starship user with retry 3 times", slog.Any("user.uuid", user.UUID), slog.Any("err", err))
}
}

Expand Down
10 changes: 5 additions & 5 deletions user/component/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func (c *memberComponentImpl) OrgMembers(ctx context.Context, orgName, currentUs
if err == nil && user.ID > 0 {
m, err := c.memberStore.Find(ctx, org.ID, user.ID)
if err != nil && !errors.Is(err, sql.ErrNoRows) {
slog.Error("failed to find member", "error", err)
slog.ErrorContext(ctx, "failed to find member", "error", err)
}
//if current user belongs to org, show more detail member info
if m != nil {
Expand All @@ -90,7 +90,7 @@ func (c *memberComponentImpl) OrgMembers(ctx context.Context, orgName, currentUs
var members []types.Member
for _, dbmember := range dbmembers {
if dbmember.User == nil {
slog.Warn("member user is nil, skip", "member", dbmember)
slog.WarnContext(ctx, "member user is nil, skip", "member", dbmember)
continue
}
m := types.Member{
Expand Down Expand Up @@ -197,7 +197,7 @@ func (c *memberComponentImpl) ChangeMemberRole(ctx context.Context, orgName, use
NewRole: newRole,
})
if err != nil {
slog.Error("failed to send organization permission change.", slog.String("orgName", orgName), slog.Any("err", err))
slog.ErrorContext(notificationCtx, "failed to send organization permission change.", slog.String("orgName", orgName), slog.Any("err", err))
}
}()

Expand Down Expand Up @@ -286,7 +286,7 @@ func (c *memberComponentImpl) AddMembers(ctx context.Context, orgName string, us
UserName: userName,
})
if err != nil {
slog.Error("failed to send organization member join message", slog.String("orgName", orgName), slog.Any("err", err))
slog.ErrorContext(notificationCtx, "failed to send organization member join message", slog.String("orgName", orgName), slog.Any("err", err))
}
}(orgName, userName, role, userUUIDs)
}
Expand Down Expand Up @@ -386,7 +386,7 @@ func (c *memberComponentImpl) Delete(ctx context.Context, orgName, userName, ope
UserName: userName,
})
if err != nil {
slog.Error("failed to send organization member leave message", slog.String("orgName", orgName), slog.String("userName", userName), slog.Any("err", err))
slog.ErrorContext(notificationCtx, "failed to send organization member leave message", slog.String("orgName", orgName), slog.String("userName", userName), slog.Any("err", err))
}
}()
}
Expand Down
8 changes: 4 additions & 4 deletions user/component/organization.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@ func (c *organizationComponentImpl) FixOrgData(ctx context.Context, org *databas
req.Description = org.Description
err := c.gs.FixOrganization(req, *user)
if err != nil {
slog.Error("fix git org data has error", slog.Any("error", err))
slog.ErrorContext(ctx, "fix git org data has error", slog.Any("error", err))
}
// need to create roles for a new org before adding members
err = c.msc.InitRoles(ctx, org)
if err != nil {
slog.Error("fix organization role has error", slog.String("error", err.Error()))
slog.ErrorContext(ctx, "fix organization role has error", slog.String("error", err.Error()))
}
// org creator defaults to be admin role
err = c.msc.SetAdmin(ctx, org, user)
Expand Down Expand Up @@ -184,7 +184,7 @@ func (c *organizationComponentImpl) Get(ctx context.Context, orgName string) (*t
func (c *organizationComponentImpl) Delete(ctx context.Context, req *types.DeleteOrgReq) error {
r, err := c.msc.GetMemberRole(ctx, req.Name, req.CurrentUser)
if err != nil {
slog.Error("faild to get member role",
slog.ErrorContext(ctx, "faild to get member role",
slog.String("org", req.Name), slog.String("user", req.CurrentUser),
slog.String("error", err.Error()))
}
Expand All @@ -205,7 +205,7 @@ func (c *organizationComponentImpl) Delete(ctx context.Context, req *types.Delet
func (c *organizationComponentImpl) Update(ctx context.Context, req *types.EditOrgReq) (*database.Organization, error) {
r, err := c.msc.GetMemberRole(ctx, req.Name, req.CurrentUser)
if err != nil {
slog.Error("faild to get member role",
slog.ErrorContext(ctx, "faild to get member role",
slog.String("org", req.Name), slog.String("user", req.CurrentUser),
slog.String("error", err.Error()))
}
Expand Down
4 changes: 2 additions & 2 deletions user/component/organization_verify.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func (o *OrganizationVerifyComponentImpl) Update(ctx context.Context, id int64,
defer cancel()
err = o.sendNotification(notificationCtx, status, orgVerify.UserUUID)
if err != nil {
slog.Error("failed to send organization verify notification", slog.Any("error", err))
slog.ErrorContext(ctx, "failed to send organization verify notification", slog.Any("error", err))
}
}()

Expand Down Expand Up @@ -126,7 +126,7 @@ func (o *OrganizationVerifyComponentImpl) sendNotification(ctx context.Context,
break
}
if i < retryCount-1 {
slog.Warn("failed to send notification, retrying", "notification_msg", notificationMsg, "attempt", i+1, "error", sendErr.Error())
slog.WarnContext(ctx, "failed to send notification, retrying", "notification_msg", notificationMsg, "attempt", i+1, "error", sendErr.Error())
}
}

Expand Down
7 changes: 6 additions & 1 deletion user/component/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ import (

const GitalyRepoNotFoundErr = "rpc error: code = NotFound desc = repository does not exist"

const (
SMSCodeCachePrefix = "sms:code"
SMSCodeCacheTTL = 1 * time.Minute
)

type userComponentImpl struct {
userStore database.UserStore
orgStore database.OrgStore
Expand All @@ -42,8 +47,8 @@ type userComponentImpl struct {
gs gitserver.GitServer
jwtc JwtComponent
tokenc AccessTokenComponent
invitationc InvitationComponent
userPhonec UserPhoneComponent
invitationc InvitationComponent

// casc *casdoorsdk.Client
// casConfig *casdoorsdk.AuthConfig
Expand Down
Loading
Loading