Skip to content

Commit fb618ba

Browse files
secrets: improve plugin error messages (#27330)
1 parent edb2c84 commit fb618ba

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

client/allocrunner/taskrunner/secrets/plugin_provider.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@ type ExternalPluginProvider struct {
1414
// plugin is the commonplugin to be executed by this secret
1515
plugin commonplugins.SecretsPlugin
1616

17-
// name of the plugin and also the executable
18-
name string
17+
// pluginName refers to the provider parameter of the secret block
18+
// and is here mainly for debugging purposes
19+
pluginName string
20+
21+
// secretName is the secret block name executing the plugin
22+
secretName string
1923

2024
// path is the secret location used in Fetch
2125
path string
@@ -26,26 +30,27 @@ type Response struct {
2630
Error *string `json:"error,omitempty"`
2731
}
2832

29-
func NewExternalPluginProvider(plugin commonplugins.SecretsPlugin, name string, path string) *ExternalPluginProvider {
33+
func NewExternalPluginProvider(plugin commonplugins.SecretsPlugin, pluginName, secretName, path string) *ExternalPluginProvider {
3034
return &ExternalPluginProvider{
31-
plugin: plugin,
32-
name: name,
33-
path: path,
35+
plugin: plugin,
36+
pluginName: pluginName,
37+
secretName: secretName,
38+
path: path,
3439
}
3540
}
3641

3742
func (p *ExternalPluginProvider) Fetch(ctx context.Context) (map[string]string, error) {
3843
resp, err := p.plugin.Fetch(ctx, p.path)
3944
if err != nil {
40-
return nil, fmt.Errorf("failed to fetch secret from plugin %s: %w", p.name, err)
45+
return nil, fmt.Errorf("failed executing plugin %q for secret %q: %w", p.pluginName, p.secretName, err)
4146
}
4247
if resp.Error != nil {
43-
return nil, fmt.Errorf("error returned from secret plugin %s: %s", p.name, *resp.Error)
48+
return nil, fmt.Errorf("provider %q for secret %q response contained error: %q", p.pluginName, p.secretName, *resp.Error)
4449
}
4550

4651
formatted := make(map[string]string, len(resp.Result))
4752
for k, v := range resp.Result {
48-
formatted[fmt.Sprintf("secret.%s.%s", p.name, k)] = v
53+
formatted[fmt.Sprintf("secret.%s.%s", p.secretName, k)] = v
4954
}
5055

5156
return formatted, nil

client/allocrunner/taskrunner/secrets/plugin_provider_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func TestExternalPluginProvider_Fetch(t *testing.T) {
4242
mockSecretPlugin := new(MockSecretPlugin)
4343
mockSecretPlugin.On("Fetch", mock.Anything).Return(nil, errors.New("something bad"))
4444

45-
testProvider := NewExternalPluginProvider(mockSecretPlugin, "test", "test")
45+
testProvider := NewExternalPluginProvider(mockSecretPlugin, "test-provider", "test", "test")
4646

4747
vars, err := testProvider.Fetch(t.Context())
4848
must.ErrorContains(t, err, "something bad")
@@ -57,10 +57,10 @@ func TestExternalPluginProvider_Fetch(t *testing.T) {
5757
Error: &testError,
5858
}, nil)
5959

60-
testProvider := NewExternalPluginProvider(mockSecretPlugin, "test", "test")
60+
testProvider := NewExternalPluginProvider(mockSecretPlugin, "test-provider", "test", "test")
6161

6262
vars, err := testProvider.Fetch(t.Context())
63-
must.ErrorContains(t, err, "error returned from secret plugin")
63+
must.ErrorContains(t, err, "provider \"test-provider\" for secret \"test\" response contained error")
6464
must.Nil(t, vars)
6565
})
6666

@@ -73,7 +73,7 @@ func TestExternalPluginProvider_Fetch(t *testing.T) {
7373
Error: nil,
7474
}, nil)
7575

76-
testProvider := NewExternalPluginProvider(mockSecretPlugin, "test", "test")
76+
testProvider := NewExternalPluginProvider(mockSecretPlugin, "test-provider", "test", "test")
7777

7878
result, err := testProvider.Fetch(t.Context())
7979
must.NoError(t, err)

client/allocrunner/taskrunner/secrets_hook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ func (h *secretsHook) buildSecretProviders(secretDir string) ([]TemplateProvider
213213
multierror.Append(mErr, err)
214214
continue
215215
}
216-
pluginProvider = append(pluginProvider, secrets.NewExternalPluginProvider(plug, s.Name, s.Path))
216+
pluginProvider = append(pluginProvider, secrets.NewExternalPluginProvider(plug, s.Provider, s.Name, s.Path))
217217
}
218218
}
219219

0 commit comments

Comments
 (0)