Skip to content

Commit

Permalink
Update mssql's contained_db field to accept a boolean (hashicorp#13469)
Browse files Browse the repository at this point in the history
Previously the `contained_db` parameter would only accept a string value
despite the fact that field type is documented as a boolean.
  • Loading branch information
benashz authored and Artem Alexandrov committed Feb 4, 2022
1 parent 3b73e87 commit 9399147
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 14 deletions.
3 changes: 3 additions & 0 deletions changelog/13469.txt
@@ -0,0 +1,3 @@
```release-note:bug
secrets/database/mssql: Accept a boolean for `contained_db`, rather than just a string.
```
21 changes: 8 additions & 13 deletions plugins/database/mssql/mssql.go
Expand Up @@ -5,13 +5,14 @@ import (
"database/sql"
"errors"
"fmt"
"strconv"
"strings"

_ "github.com/denisenkom/go-mssqldb"
multierror "github.com/hashicorp/go-multierror"
"github.com/hashicorp/go-multierror"
"github.com/hashicorp/go-secure-stdlib/parseutil"
"github.com/hashicorp/go-secure-stdlib/strutil"
dbplugin "github.com/hashicorp/vault/sdk/database/dbplugin/v5"

"github.com/hashicorp/vault/sdk/database/dbplugin/v5"
"github.com/hashicorp/vault/sdk/database/helper/connutil"
"github.com/hashicorp/vault/sdk/database/helper/dbutil"
"github.com/hashicorp/vault/sdk/helper/dbtxn"
Expand Down Expand Up @@ -98,20 +99,14 @@ func (m *MSSQL) Initialize(ctx context.Context, req dbplugin.InitializeRequest)
return dbplugin.InitializeResponse{}, fmt.Errorf("invalid username template - did you reference a field that isn't available? : %w", err)
}

containedDB := false
containedDBRaw, err := strutil.GetString(req.Config, "contained_db")
if err != nil {
return dbplugin.InitializeResponse{}, fmt.Errorf("failed to retrieve contained_db: %w", err)
}
if containedDBRaw != "" {
containedDB, err = strconv.ParseBool(containedDBRaw)
if v, ok := req.Config["contained_db"]; ok {
containedDB, err := parseutil.ParseBool(v)
if err != nil {
return dbplugin.InitializeResponse{}, fmt.Errorf("parsing error: incorrect boolean operator provided for contained_db: %w", err)
return dbplugin.InitializeResponse{}, fmt.Errorf(`invalid value for "contained_db": %w`, err)
}
m.containedDB = containedDB
}

m.containedDB = containedDB

resp := dbplugin.InitializeResponse{
Config: newConf,
}
Expand Down
11 changes: 10 additions & 1 deletion plugins/database/mssql/mssql_test.go
Expand Up @@ -11,7 +11,7 @@ import (
"time"

mssqlhelper "github.com/hashicorp/vault/helper/testhelpers/mssql"
dbplugin "github.com/hashicorp/vault/sdk/database/dbplugin/v5"
"github.com/hashicorp/vault/sdk/database/dbplugin/v5"
dbtesting "github.com/hashicorp/vault/sdk/database/dbplugin/v5/testing"
"github.com/hashicorp/vault/sdk/helper/dbtxn"
)
Expand Down Expand Up @@ -43,6 +43,15 @@ func TestInitialize(t *testing.T) {
},
},
"contained_db set": {
dbplugin.InitializeRequest{
Config: map[string]interface{}{
"connection_url": connURL,
"contained_db": true,
},
VerifyConnection: true,
},
},
"contained_db set string": {
dbplugin.InitializeRequest{
Config: map[string]interface{}{
"connection_url": connURL,
Expand Down

0 comments on commit 9399147

Please sign in to comment.