fix init with empty options
Some checks failed
autoapprove / autoapprove (pull_request) Failing after 5s
automerge / automerge (pull_request) Failing after 5s
dependabot-automerge / automerge (pull_request) Has been skipped
prbuild / test (pull_request) Failing after 7s
prbuild / lint (pull_request) Failing after 5s
codeql / analyze (go) (pull_request) Failing after 6s

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
Василий Толстов 2023-06-03 23:19:38 +03:00
parent ab279308cd
commit 0015bbd209

View File

@ -17,6 +17,9 @@ var DefaultStructTag = "vault"
type vaultConfig struct {
path string
token string
roleID string
secretID string
cli *api.Client
opts config.Options
}
@ -95,43 +98,38 @@ func (c *vaultConfig) Init(opts ...config.Option) error {
}
c.cli = cli
c.path = path
c.token = token
c.roleID = roleID
c.secretID = secretID
if token != "" {
cli.SetToken(token)
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
if err = c.setToken(); err != nil && !c.opts.AllowFail {
return err
}
return nil
} else if roleID == "" || secretID == "" {
if !c.opts.AllowFail {
return fmt.Errorf("missing Token or RoleID and SecretID")
}
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
return err
}
return nil
}
func (c *vaultConfig) setToken() error {
if c.token != "" {
c.cli.SetToken(c.token)
}
rsp, err := cli.Logical().Write("auth/approle/login", map[string]interface{}{
"role_id": roleID,
"secret_id": secretID,
if c.roleID != "" && c.secretID != "" {
rsp, err := c.cli.Logical().Write("auth/approle/login", map[string]interface{}{
"role_id": c.roleID,
"secret_id": c.secretID,
})
if err != nil {
if !c.opts.AllowFail {
return err
}
} else if err == nil {
cli.SetToken(rsp.Auth.ClientToken)
c.cli.SetToken(rsp.Auth.ClientToken)
}
if err := config.DefaultAfterInit(c.opts.Context, c); err != nil && !c.opts.AllowFail {
return err
}
return nil