mounted_models_resources.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package models
  2. import (
  3. "context"
  4. "fmt"
  5. "yunion.io/x/pkg/errors"
  6. "yunion.io/x/sqlchemy"
  7. apis "yunion.io/x/onecloud/pkg/apis/llm"
  8. "yunion.io/x/onecloud/pkg/cloudcommon/db"
  9. "yunion.io/x/onecloud/pkg/mcclient"
  10. )
  11. type SMountedModelsResourceManager struct {
  12. }
  13. type SMountedModelsResource struct {
  14. MountedModels []string `charset:"utf8" list:"user" update:"user" create:"optional"`
  15. }
  16. func (manager *SMountedModelsResourceManager) ListItemFilter(
  17. ctx context.Context,
  18. q *sqlchemy.SQuery,
  19. userCred mcclient.TokenCredential,
  20. input apis.MountedModelResourceListInput,
  21. ) (*sqlchemy.SQuery, error) {
  22. if len(input.MountedModels) > 0 {
  23. q = q.ContainsAny("mounted_models", input.MountedModels)
  24. }
  25. return q, nil
  26. }
  27. type MountedModelModelManager interface {
  28. IsPremountedModelName(fullModelName string) (bool, error)
  29. }
  30. func (manager *SVolumeManager) IsPremountedModelName(fullModelName string) (bool, error) {
  31. return isPremountedModelName(manager, fullModelName)
  32. }
  33. func (manager *SLLMSkuManager) IsPremountedModelName(fullModelName string) (bool, error) {
  34. return isPremountedModelName(manager, fullModelName)
  35. }
  36. func isPremountedModelName(manager db.IModelManager, fullModelName string) (bool, error) {
  37. q := manager.Query().Contains("mounted_models", fmt.Sprintf("%q", fullModelName))
  38. cnt, err := q.CountWithError()
  39. if err != nil {
  40. return false, errors.Wrap(err, "CountWithError")
  41. }
  42. return cnt > 0, nil
  43. }