LoadByProjectAndName loads an instance by project and name.
(s *state.State, projectName string, instanceName string)
| 319 | |
| 320 | // LoadByProjectAndName loads an instance by project and name. |
| 321 | func LoadByProjectAndName(s *state.State, projectName string, instanceName string) (Instance, error) { |
| 322 | // Get the DB record |
| 323 | var args db.InstanceArgs |
| 324 | var p *api.Project |
| 325 | err := s.DB.Cluster.Transaction(context.TODO(), func(ctx context.Context, tx *db.ClusterTx) error { |
| 326 | proj, err := cluster.GetProject(ctx, tx.Tx(), projectName) |
| 327 | if err != nil { |
| 328 | return err |
| 329 | } |
| 330 | |
| 331 | p, err = proj.ToAPI(ctx, tx.Tx()) |
| 332 | if err != nil { |
| 333 | return err |
| 334 | } |
| 335 | |
| 336 | inst, err := LoadInstanceDatabaseObject(ctx, tx, projectName, instanceName) |
| 337 | if err != nil { |
| 338 | return err |
| 339 | } |
| 340 | |
| 341 | instArgs, err := tx.InstancesToInstanceArgs(ctx, true, *inst) |
| 342 | if err != nil { |
| 343 | return err |
| 344 | } |
| 345 | |
| 346 | args = instArgs[inst.ID] |
| 347 | |
| 348 | return nil |
| 349 | }) |
| 350 | if err != nil { |
| 351 | return nil, err |
| 352 | } |
| 353 | |
| 354 | inst, err := Load(s, args, *p) |
| 355 | if err != nil { |
| 356 | return nil, fmt.Errorf("Failed to load instance: %w", err) |
| 357 | } |
| 358 | |
| 359 | return inst, nil |
| 360 | } |
| 361 | |
| 362 | // LoadNodeAll loads all instances on this server. |
| 363 | func LoadNodeAll(s *state.State, instanceType instancetype.Type) ([]Instance, error) { |
searching dependent graphs…