| // Copyright (c) HashiCorp, Inc. |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| package api |
| |
| // NOTE: this file was copied from |
| // https://github.com/hashicorp/vault/blob/main/sdk/helper/consts/plugin_types.go |
| // Any changes made should be made to both files at the same time. |
| |
| import "fmt" |
| |
| var PluginTypes = []PluginType{ |
| PluginTypeUnknown, |
| PluginTypeCredential, |
| PluginTypeDatabase, |
| PluginTypeSecrets, |
| } |
| |
| type PluginType uint32 |
| |
| // This is a list of PluginTypes used by Vault. |
| // If we need to add any in the future, it would |
| // be best to add them to the _end_ of the list below |
| // because they resolve to incrementing numbers, |
| // which may be saved in state somewhere. Thus if |
| // the name for one of those numbers changed because |
| // a value were added to the middle, that could cause |
| // the wrong plugin types to be read from storage |
| // for a given underlying number. Example of the problem |
| // here: https://play.golang.org/p/YAaPw5ww3er |
| const ( |
| PluginTypeUnknown PluginType = iota |
| PluginTypeCredential |
| PluginTypeDatabase |
| PluginTypeSecrets |
| ) |
| |
| func (p PluginType) String() string { |
| switch p { |
| case PluginTypeUnknown: |
| return "unknown" |
| case PluginTypeCredential: |
| return "auth" |
| case PluginTypeDatabase: |
| return "database" |
| case PluginTypeSecrets: |
| return "secret" |
| default: |
| return "unsupported" |
| } |
| } |
| |
| func ParsePluginType(pluginType string) (PluginType, error) { |
| switch pluginType { |
| case "unknown": |
| return PluginTypeUnknown, nil |
| case "auth": |
| return PluginTypeCredential, nil |
| case "database": |
| return PluginTypeDatabase, nil |
| case "secret": |
| return PluginTypeSecrets, nil |
| default: |
| return PluginTypeUnknown, fmt.Errorf("%q is not a supported plugin type", pluginType) |
| } |
| } |