Add comments to connection and credential producers
This commit is contained in:
parent
b09526e1c9
commit
50729a4528
|
@ -23,6 +23,9 @@ var (
|
||||||
errNotInitalized = errors.New("connection has not been initalized")
|
errNotInitalized = errors.New("connection has not been initalized")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// ConnectionProducer can be used as an embeded interface in the DatabaseType
|
||||||
|
// definition. It implements the methods dealing with individual database
|
||||||
|
// connections and is used in all the builtin database types.
|
||||||
type ConnectionProducer interface {
|
type ConnectionProducer interface {
|
||||||
Close() error
|
Close() error
|
||||||
Initialize(map[string]interface{}) error
|
Initialize(map[string]interface{}) error
|
||||||
|
@ -31,7 +34,7 @@ type ConnectionProducer interface {
|
||||||
connection() (interface{}, error)
|
connection() (interface{}, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// sqlConnectionProducer impliments ConnectionProducer and provides a generic producer for most sql databases
|
// sqlConnectionProducer implements ConnectionProducer and provides a generic producer for most sql databases
|
||||||
type sqlConnectionProducer struct {
|
type sqlConnectionProducer struct {
|
||||||
ConnectionURL string `json:"connection_url" structs:"connection_url" mapstructure:"connection_url"`
|
ConnectionURL string `json:"connection_url" structs:"connection_url" mapstructure:"connection_url"`
|
||||||
|
|
||||||
|
@ -111,6 +114,8 @@ func (c *sqlConnectionProducer) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cassandraConnectionProducer implements ConnectionProducer and provides an
|
||||||
|
// interface for cassandra databases to make connections.
|
||||||
type cassandraConnectionProducer struct {
|
type cassandraConnectionProducer struct {
|
||||||
Hosts string `json:"hosts" structs:"hosts" mapstructure:"hosts"`
|
Hosts string `json:"hosts" structs:"hosts" mapstructure:"hosts"`
|
||||||
Username string `json:"username" structs:"username" mapstructure:"username"`
|
Username string `json:"username" structs:"username" mapstructure:"username"`
|
||||||
|
|
|
@ -8,20 +8,22 @@ import (
|
||||||
uuid "github.com/hashicorp/go-uuid"
|
uuid "github.com/hashicorp/go-uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// CredentialsProducer can be used as an embeded interface in the DatabaseType
|
||||||
|
// definition. It implements the methods for generating user information for a
|
||||||
|
// particular database type and is used in all the builtin database types.
|
||||||
type CredentialsProducer interface {
|
type CredentialsProducer interface {
|
||||||
GenerateUsername(displayName string) (string, error)
|
GenerateUsername(displayName string) (string, error)
|
||||||
GeneratePassword() (string, error)
|
GeneratePassword() (string, error)
|
||||||
GenerateExpiration(ttl time.Duration) (string, error)
|
GenerateExpiration(ttl time.Duration) (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// sqlCredentialsProducer impliments CredentialsProducer and provides a generic credentials producer for most sql database types.
|
// sqlCredentialsProducer implements CredentialsProducer and provides a generic credentials producer for most sql database types.
|
||||||
type sqlCredentialsProducer struct {
|
type sqlCredentialsProducer struct {
|
||||||
displayNameLen int
|
displayNameLen int
|
||||||
usernameLen int
|
usernameLen int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (scp *sqlCredentialsProducer) GenerateUsername(displayName string) (string, error) {
|
func (scp *sqlCredentialsProducer) GenerateUsername(displayName string) (string, error) {
|
||||||
// Generate the username, password and expiration. PG limits user to 63 characters
|
|
||||||
if scp.displayNameLen > 0 && len(displayName) > scp.displayNameLen {
|
if scp.displayNameLen > 0 && len(displayName) > scp.displayNameLen {
|
||||||
displayName = displayName[:scp.displayNameLen]
|
displayName = displayName[:scp.displayNameLen]
|
||||||
}
|
}
|
||||||
|
@ -52,6 +54,8 @@ func (scp *sqlCredentialsProducer) GenerateExpiration(ttl time.Duration) (string
|
||||||
Format("2006-01-02 15:04:05-0700"), nil
|
Format("2006-01-02 15:04:05-0700"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cassandraCredentialsProducer implements CredentialsProducer and provides an
|
||||||
|
// interface for cassandra databases to generate user information.
|
||||||
type cassandraCredentialsProducer struct{}
|
type cassandraCredentialsProducer struct{}
|
||||||
|
|
||||||
func (ccp *cassandraCredentialsProducer) GenerateUsername(displayName string) (string, error) {
|
func (ccp *cassandraCredentialsProducer) GenerateUsername(displayName string) (string, error) {
|
||||||
|
|
Loading…
Reference in New Issue