MCPcopy Create free account
hub / github.com/OpenCSGs/csghub-server / Deploy

Method Deploy

component/model.go:640–730  ·  view source on GitHub ↗

create model deploy as inference/serverless

(ctx context.Context, deployReq types.DeployActReq, req types.ModelRunReq)

Source from the content-addressed store, hash-verified

638
639// create model deploy as inference/serverless
640func (c *ModelComponent) Deploy(ctx context.Context, deployReq types.DeployActReq, req types.ModelRunReq) (int64, error) {
641 m, err := c.ms.FindByPath(ctx, deployReq.Namespace, deployReq.Name)
642 if err != nil {
643 return -1, fmt.Errorf("cannot find model, %w", err)
644 }
645 if deployReq.DeployType == types.ServerlessType {
646 // only one service deploy was allowed
647 d, err := c.deploy.GetServerlessDeployByRepID(ctx, m.Repository.ID)
648 if err != nil {
649 return -1, fmt.Errorf("fail to get deploy, %w", err)
650 }
651 if d != nil {
652 return d.ID, nil
653 }
654 }
655 // found user id
656 user, err := c.us.FindByUsername(ctx, deployReq.CurrentUser)
657 if err != nil {
658 return -1, fmt.Errorf("cannot find user for deploy model, %w", err)
659 }
660
661 if deployReq.DeployType == types.ServerlessType {
662 // Check if the user is an admin
663 isAdmin := c.isAdminRole(user)
664 if !isAdmin {
665 return -1, fmt.Errorf("need admin permission for Serverless deploy")
666 }
667 }
668
669 frame, err := c.rtfm.FindEnabledByID(ctx, req.RuntimeFrameworkID)
670 if err != nil {
671 return -1, fmt.Errorf("cannot find available runtime framework, %w", err)
672 }
673
674 // put repo-type and namespace/name in annotation
675 annotations := make(map[string]string)
676 annotations[types.ResTypeKey] = string(types.ModelRepo)
677 annotations[types.ResNameKey] = fmt.Sprintf("%s/%s", deployReq.Namespace, deployReq.Name)
678 annoStr, err := json.Marshal(annotations)
679 if err != nil {
680 return -1, fmt.Errorf("fail to create annotations for deploy model, %w", err)
681 }
682
683 resource, err := c.SS.FindByID(ctx, req.ResourceID)
684 if err != nil {
685 return -1, fmt.Errorf("cannot find resource, %w", err)
686 }
687
688 var hardware types.HardWare
689 err = json.Unmarshal([]byte(resource.Resources), &hardware)
690 if err != nil {
691 return -1, fmt.Errorf("invalid hardware setting, %w", err)
692 }
693
694 _, err = c.deployer.CheckResourceAvailable(ctx, req.ClusterID, &hardware)
695 if err != nil {
696 return -1, fmt.Errorf("fail to check resource, %w", err)
697 }

Callers

nothing calls this directly

Calls 8

FindByUsernameMethod · 0.80
isAdminRoleMethod · 0.80
FindEnabledByIDMethod · 0.80
DeployMethod · 0.65
FindByPathMethod · 0.45
FindByIDMethod · 0.45

Tested by

no test coverage detected