Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 20 additions & 17 deletions internal/orchestrator/bricks/bricks.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,13 @@ func (s *Service) List() (BrickListResult, error) {
res := BrickListResult{Bricks: make([]BrickListItem, len(s.bricksIndex.Bricks))}
for i, brick := range s.bricksIndex.Bricks {
res.Bricks[i] = BrickListItem{
ID: brick.ID,
Name: brick.Name,
Author: "Arduino", // TODO: for now we only support our bricks
Description: brick.Description,
Category: brick.Category,
Status: "installed",
ID: brick.ID,
Name: brick.Name,
Author: "Arduino", // TODO: for now we only support our bricks
Description: brick.Description,
Category: brick.Category,
Status: "installed",
ModelRequired: brick.ModelRequired,
Models: f.Map(s.modelsIndex.GetModelsByBrick(brick.ID), func(m modelsindex.AIModel) string {
return m.ID
}),
Expand All @@ -88,6 +89,7 @@ func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesRes
Author: "Arduino", // TODO: for now we only support our bricks
Category: brick.Category,
Status: "installed",
ModelRequired: brick.ModelRequired, // TODO: in case is not set by the user, should we return false?
ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model?
Variables: variablesMap, // TODO: do we want to show also the default value of not explicitly set variables?
ConfigVariables: configVariables,
Expand Down Expand Up @@ -195,17 +197,18 @@ func (s *Service) BricksDetails(id string, idProvider *app.IDProvider,
}

return BrickDetailsResult{
ID: id,
Name: brick.Name,
Author: "Arduino", // TODO: for now we only support our bricks
Description: brick.Description,
Category: brick.Category,
Status: "installed", // For now every Arduino brick are installed
Variables: variables,
Readme: readme,
ApiDocsPath: apiDocsPath,
CodeExamples: codeExamples,
UsedByApps: usedByApps,
ID: id,
Name: brick.Name,
Author: "Arduino", // TODO: for now we only support our bricks
Description: brick.Description,
Category: brick.Category,
ModelRequired: brick.ModelRequired,
Status: "installed", // For now every Arduino brick are installed
Variables: variables,
Readme: readme,
ApiDocsPath: apiDocsPath,
CodeExamples: codeExamples,
UsedByApps: usedByApps,
}, nil
}

Expand Down
39 changes: 21 additions & 18 deletions internal/orchestrator/bricks/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ type BrickListResult struct {
}

type BrickListItem struct {
ID string `json:"id"`
Name string `json:"name"`
Author string `json:"author"`
Description string `json:"description"`
Category string `json:"category"`
Status string `json:"status"`
Models []string `json:"models"`
ID string `json:"id"`
Name string `json:"name"`
Author string `json:"author"`
Description string `json:"description"`
Category string `json:"category"`
Status string `json:"status"`
ModelRequired bool `json:"require_model"`
Models []string `json:"models"`
}

type AppBrickInstancesResult struct {
Expand All @@ -41,6 +42,7 @@ type BrickInstance struct {
Status string `json:"status"`
Variables map[string]string `json:"variables,omitempty" description:"Deprecated: use config_variables instead. This field is kept for backward compatibility."`
ConfigVariables []BrickConfigVariable `json:"config_variables,omitempty"`
ModelRequired bool `json:"require_model,omitempty"`
ModelID string `json:"model,omitempty"`
}

Expand All @@ -67,15 +69,16 @@ type AppReference struct {
}

type BrickDetailsResult struct {
ID string `json:"id"`
Name string `json:"name"`
Author string `json:"author"`
Description string `json:"description"`
Category string `json:"category"`
Status string `json:"status"`
Variables map[string]BrickVariable `json:"variables,omitempty"`
Readme string `json:"readme"`
ApiDocsPath string `json:"api_docs_path"`
CodeExamples []CodeExample `json:"code_examples"`
UsedByApps []AppReference `json:"used_by_apps"`
ID string `json:"id"`
Name string `json:"name"`
Author string `json:"author"`
Description string `json:"description"`
Category string `json:"category"`
Status string `json:"status"`
ModelRequired bool `json:"require_model"`
Variables map[string]BrickVariable `json:"variables,omitempty"`
Readme string `json:"readme"`
ApiDocsPath string `json:"api_docs_path"`
CodeExamples []CodeExample `json:"code_examples"`
UsedByApps []AppReference `json:"used_by_apps"`
}
2 changes: 1 addition & 1 deletion internal/orchestrator/bricksindex/bricks_index.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ type Brick struct {
Category string `yaml:"category,omitempty"`
RequiresDisplay string `yaml:"requires_display,omitempty"`
RequireContainer bool `yaml:"require_container"`
RequireModel bool `yaml:"require_model"`
Variables []BrickVariable `yaml:"variables,omitempty"`
Ports []string `yaml:"ports,omitempty"`
ModelRequired bool `yaml:"require_model,omitempty"`
ModelName string `yaml:"model_name,omitempty"`
MountDevicesIntoContainer bool `yaml:"mount_devices_into_container,omitempty"`
RequiredDevices []string `yaml:"required_devices,omitempty"`
Expand Down
2 changes: 1 addition & 1 deletion internal/orchestrator/bricksindex/bricks_index_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ func TestBricksIndex(t *testing.T) {
require.True(t, found)
require.Equal(t, "Image Classification", b.Name)
require.Equal(t, "mobilenet-image-classification", b.ModelName)
require.True(t, b.RequireModel)
require.True(t, b.ModelRequired)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would add two additional unit tests: "require_model: false" and a missing "require_model" in the yaml

require.Len(t, b.Variables, 2)
require.Equal(t, "CUSTOM_MODEL_PATH", b.Variables[0].Name)
require.Equal(t, "/opt/models/ei/", b.Variables[0].DefaultValue)
Expand Down
8 changes: 5 additions & 3 deletions internal/orchestrator/orchestrator.go
Original file line number Diff line number Diff line change
Expand Up @@ -667,9 +667,10 @@ type AppDetailedInfo struct {
}

type AppDetailedBrick struct {
ID string `json:"id" required:"true"`
Name string `json:"name" required:"true"`
Category string `json:"category,omitempty"`
ID string `json:"id" required:"true"`
Name string `json:"name" required:"true"`
Category string `json:"category,omitempty"`
ModelRequired bool `json:"require_model,omitempty"`
}

func AppDetails(
Expand Down Expand Up @@ -732,6 +733,7 @@ func AppDetails(
}
res.Name = bi.Name
res.Category = bi.Category
res.ModelRequired = bi.ModelRequired
return res
}),
}, nil
Expand Down