66 lines
1.7 KiB
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)
|
|
}
|
|
}
|