Skip to content

Commit ea2db7f

Browse files
authored
feat: provider requirement handling (#1300)
BREAKING CHANGE: provider interface change Signed-off-by: Philip-21 <philipuzomaobiora@gmail.com>
1 parent e2e5818 commit ea2db7f

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

pkg/provider/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
type Provider interface {
1616
Initialize(InitializeProviderRequest) (*util.Empty, error)
1717
GetInfo() (ProviderInfo, error)
18+
CheckRequirements() (*[]RequirementStatus, error)
1819

1920
GetTargetManifest() (*ProviderTargetManifest, error)
2021
GetPresetTargets() (*[]ProviderTarget, error)

pkg/provider/rpc_client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ func (m *ProviderRPCClient) GetInfo() (ProviderInfo, error) {
2626
return resp, err
2727
}
2828

29+
func (m *ProviderRPCClient) CheckRequirements() (*[]RequirementStatus, error) {
30+
var result []RequirementStatus
31+
err := m.client.Call("Plugin.CheckRequirements", new(interface{}), &result)
32+
return &result, err
33+
}
34+
2935
func (m *ProviderRPCClient) GetTargetManifest() (*ProviderTargetManifest, error) {
3036
var resp ProviderTargetManifest
3137
err := m.client.Call("Plugin.GetTargetManifest", new(interface{}), &resp)

pkg/provider/rpc_server.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ func (m *ProviderRPCServer) GetInfo(arg interface{}, resp *ProviderInfo) error {
2828
return nil
2929
}
3030

31+
func (m *ProviderRPCServer) CheckRequirements(arg interface{}, resp *[]RequirementStatus) error {
32+
result, err := m.Impl.CheckRequirements()
33+
if err != nil {
34+
return err
35+
}
36+
*resp = *result
37+
return nil
38+
}
39+
3140
func (m *ProviderRPCServer) GetTargetManifest(arg interface{}, resp *ProviderTargetManifest) error {
3241
targetManifest, err := m.Impl.GetTargetManifest()
3342
if err != nil {

pkg/provider/types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,9 @@ type ProviderTargetProperty struct {
8383
// Suggestions is an optional list of auto-complete values to assist the user while filling the field
8484
Suggestions []string
8585
}
86+
87+
type RequirementStatus struct {
88+
Name string
89+
Met bool
90+
Reason string
91+
} // @name RequirementStatus

pkg/server/providers.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,17 @@ func (s *Server) registerProviders() error {
103103
log.Error(err)
104104
continue
105105
}
106+
requirements, err := (*provider).CheckRequirements()
107+
if err != nil {
108+
return err
109+
}
110+
for _, req := range *requirements {
111+
if req.Met {
112+
log.Infof("Provider requirement met: %s", req.Reason)
113+
} else {
114+
log.Warnf("Provider requirement not met: %s", req.Reason)
115+
}
116+
}
106117

107118
if manifest.HasUpdateAvailable(info.Name, info.Version) {
108119
log.Infof("Update available for %s. Update with `daytona provider update`.", info.Name)

0 commit comments

Comments
 (0)