MCPcopy Create free account
hub / github.com/cloudbase/garm / CreateScaleSetInstance

Method CreateScaleSetInstance

database/sql/scaleset_instances.go:27–66  ·  view source on GitHub ↗
(_ context.Context, scaleSetID uint, param params.CreateInstanceParams)

Source from the content-addressed store, hash-verified

25)
26
27func (s *sqlDatabase) CreateScaleSetInstance(_ context.Context, scaleSetID uint, param params.CreateInstanceParams) (instance params.Instance, err error) {
28 scaleSet, err := s.getScaleSetByID(s.conn, scaleSetID)
29 if err != nil {
30 return params.Instance{}, fmt.Errorf("error fetching scale set: %w", err)
31 }
32
33 defer func() {
34 if err == nil {
35 s.sendNotify(common.InstanceEntityType, common.CreateOperation, instance)
36 }
37 }()
38
39 var secret []byte
40 if len(param.JitConfiguration) > 0 {
41 secret, err = s.marshalAndSeal(param.JitConfiguration)
42 if err != nil {
43 return params.Instance{}, fmt.Errorf("error marshalling jit config: %w", err)
44 }
45 }
46
47 newInstance := Instance{
48 ScaleSet: scaleSet,
49 Name: param.Name,
50 Status: param.Status,
51 RunnerStatus: param.RunnerStatus,
52 OSType: param.OSType,
53 OSArch: param.OSArch,
54 CallbackURL: param.CallbackURL,
55 MetadataURL: param.MetadataURL,
56 GitHubRunnerGroup: param.GitHubRunnerGroup,
57 JitConfiguration: secret,
58 AgentID: param.AgentID,
59 }
60 q := s.conn.Create(&newInstance)
61 if q.Error != nil {
62 return params.Instance{}, fmt.Errorf("error creating instance: %w", q.Error)
63 }
64
65 return s.sqlToParamsInstance(newInstance)
66}
67
68func (s *sqlDatabase) ListScaleSetInstances(_ context.Context, scalesetID uint, outdatedOnly bool) ([]params.Instance, error) {
69 ret, err := s.listInstancesBatched(func(query *gorm.DB) *gorm.DB {

Callers

nothing calls this directly

Calls 4

getScaleSetByIDMethod · 0.95
sendNotifyMethod · 0.95
marshalAndSealMethod · 0.95
sqlToParamsInstanceMethod · 0.95

Tested by

no test coverage detected