Skip to content

Commit

Permalink
incusd/scriptlet: Add get_project
Browse files Browse the repository at this point in the history
Closes #811

Signed-off-by: Rohit Punjani <sunnyali1230@gmail.com>
  • Loading branch information
rpunjani authored and stgraber committed May 6, 2024
1 parent 7a82233 commit cef77b6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
36 changes: 36 additions & 0 deletions internal/server/scriptlet/instance_placement.go
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,41 @@ func InstancePlacementRun(ctx context.Context, l logger.Logger, s *state.State,
return rv, nil
}

getProjectFunc := func(thread *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var name string

err := starlark.UnpackArgs(b.Name(), args, kwargs, "name??", &name)
if err != nil {
return nil, err
}

var p *api.Project

err = s.DB.Cluster.Transaction(ctx, func(ctx context.Context, tx *db.ClusterTx) error {
dbProject, err := dbCluster.GetProject(ctx, tx.Tx(), name)
if err != nil {
return err
}

p, err = dbProject.ToAPI(ctx, tx.Tx())
if err != nil {
return err
}

return nil
})
if err != nil {
return nil, err
}

rv, err := StarlarkMarshal(p)
if err != nil {
return nil, fmt.Errorf("Marshalling instance resources failed: %w", err)
}

return rv, nil
}

var err error
var raftNodes []db.RaftNode
err = s.DB.Node.Transaction(ctx, func(ctx context.Context, tx *db.NodeTx) error {
Expand Down Expand Up @@ -461,6 +496,7 @@ func InstancePlacementRun(ctx context.Context, l logger.Logger, s *state.State,
"get_instance_resources": starlark.NewBuiltin("get_instance_resources", getInstanceResourcesFunc),
"get_instances": starlark.NewBuiltin("get_instances", getInstancesFunc),
"get_cluster_members": starlark.NewBuiltin("get_cluster_members", getClusterMembersFunc),
"get_project": starlark.NewBuiltin("get_project", getProjectFunc),
}

prog, thread, err := scriptletLoad.InstancePlacementProgram()
Expand Down
1 change: 1 addition & 0 deletions internal/server/scriptlet/load/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func InstancePlacementCompile(src string) (*starlark.Program, error) {
"get_instance_resources",
"get_instances",
"get_cluster_members",
"get_project",
},
name)
}
Expand Down

0 comments on commit cef77b6

Please sign in to comment.