automation-tests/common/pkg/config/db_backend.go

66 lines
1.7 KiB
Go

package config
import "fmt"
// DBBackend determines which supported database backend Podman should use.
type DBBackend int
const (
// Unsupported database backend. Used as a sane base value for the type.
DBBackendUnsupported DBBackend = iota
// BoltDB backend.
DBBackendBoltDB
// SQLite backend.
DBBackendSQLite
// DBBackendDefault describes that no explicit backend has been set.
// It should default to sqlite unless there is already an existing boltdb,
// this allows for backwards compatibility on upgrades. The actual detection
// logic must live in podman as we only know there were to look for the file.
DBBackendDefault
stringBoltDB = "boltdb"
stringSQLite = "sqlite"
)
// String returns the DBBackend's string representation.
func (d DBBackend) String() string {
switch d {
case DBBackendBoltDB:
return stringBoltDB
case DBBackendSQLite:
return stringSQLite
case DBBackendDefault:
return ""
default:
return fmt.Sprintf("unsupported database backend: %d", d)
}
}
// Validate returns whether the DBBackend is supported.
func (d DBBackend) Validate() error {
switch d {
case DBBackendBoltDB, DBBackendSQLite, DBBackendDefault:
return nil
default:
return fmt.Errorf("unsupported database backend: %d", d)
}
}
// ParseDBBackend parses the specified string into a DBBackend.
// An error is return for unsupported backends.
func ParseDBBackend(raw string) (DBBackend, error) {
// NOTE: this function should be used for parsing the user-specified
// values on Podman's CLI.
switch raw {
case stringBoltDB:
return DBBackendBoltDB, nil
case stringSQLite:
return DBBackendSQLite, nil
case "":
return DBBackendDefault, nil
default:
return DBBackendUnsupported, fmt.Errorf("unsupported database backend: %q", raw)
}
}