| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package models
- import (
- "context"
- "yunion.io/x/jsonutils"
- "yunion.io/x/pkg/errors"
- commonapi "yunion.io/x/onecloud/pkg/apis"
- "yunion.io/x/onecloud/pkg/apis/compute"
- api "yunion.io/x/onecloud/pkg/apis/llm"
- "yunion.io/x/onecloud/pkg/cloudcommon/db"
- "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
- "yunion.io/x/onecloud/pkg/llm/utils"
- "yunion.io/x/onecloud/pkg/mcclient"
- )
- var (
- llmContainerManager *SLLMContainerManager
- )
- func GetLLMContainerManager() *SLLMContainerManager {
- if llmContainerManager != nil {
- return llmContainerManager
- }
- m := NewLLMContainerManager(SLLMContainer{}, "llm_container", "llm_containers")
- llmContainerManager = &m
- llmContainerManager.SetVirtualObject(llmContainerManager)
- return llmContainerManager
- }
- func NewLLMContainerManager(dt interface{}, keyword string, keywordPlural string) SLLMContainerManager {
- return SLLMContainerManager{
- SVirtualResourceBaseManager: db.NewVirtualResourceBaseManager(dt, "llm_containers_tbl", keyword, keywordPlural),
- }
- }
- type SLLMContainerManager struct {
- db.SVirtualResourceBaseManager
- }
- type SLLMContainer struct {
- db.SVirtualResourceBase
- LLMId string `width:"128" charset:"ascii" nullable:"false" list:"user" primary:"true" create:"required"`
- CmpId string `width:"128" charset:"ascii" nullable:"true" list:"user" create:"required"`
- Type string `width:"16" charset:"ascii" list:"user" primary:"true" create:"required"`
- RunningAppId string `width:"128" charset:"ascii" nullable:"true" list:"user"`
- }
- func (m *SLLMContainerManager) CreateOnLLM(
- ctx context.Context,
- userCred mcclient.TokenCredential,
- ownerId mcclient.IIdentityProvider,
- llm *SLLM, cmpId string, svrName string,
- ) (*SLLMContainer, error) {
- input := &api.LLMContainerCreateInput{
- LLMId: llm.Id,
- Type: string(llm.GetLLMContainerDriver().GetType()),
- CmpId: cmpId,
- }
- input.Name = svrName
- obj, err := db.DoCreate(m, ctx, userCred, nil, jsonutils.Marshal(input), ownerId)
- if err != nil {
- return nil, errors.Wrap(err, "create llm container")
- }
- return obj.(*SLLMContainer), nil
- }
- func (m *SLLMContainerManager) FetchByLLMId(
- llmId string,
- ) (*SLLMContainer, error) {
- lc := &SLLMContainer{}
- if err := m.Query().Equals("llm_id", llmId).First(lc); err != nil {
- return nil, errors.Wrapf(err, "query llm container by llm id %s", llmId)
- }
- lc.SetModelManager(m, lc)
- return lc, nil
- }
- func (lc *SLLMContainer) GetSContainer(ctx context.Context) (*compute.SContainer, error) {
- return utils.GetContainer(ctx, lc.CmpId)
- }
- func (lc *SLLMContainer) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
- return lc.SVirtualResourceBase.Delete(ctx, userCred)
- }
- func (lc *SLLMContainer) StartDeleteTask(ctx context.Context, userCred mcclient.TokenCredential, parentTaskId string) error {
- task, err := taskman.TaskManager.NewTask(ctx, "LLMContainerDeleteTask", lc, userCred, nil, parentTaskId, "", nil)
- if err != nil {
- return err
- }
- lc.SetStatus(ctx, userCred, commonapi.STATUS_DELETING, "")
- task.ScheduleRun(nil)
- return nil
- }
|