2 * Copyright 2018 Intel Corporation, Inc
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 // SecretDomain is where Secrets are stored.
20 // A single domain can have any number of secrets
21 type SecretDomain struct {
22 UUID string `json:"uuid"`
23 Name string `json:"name"`
26 // SecretKeyValue is building block for a Secret
27 type SecretKeyValue struct {
28 Key string `json:"name"`
29 Value string `json:"value"`
32 // Secret is the struct that defines the structure of a secret
33 // A single Secret can have any number of SecretKeyValue pairs
35 Name string `json:"name"`
36 Values []SecretKeyValue `json:"values"`
39 // SecretBackend interface that will be implemented for various secret backends
40 type SecretBackend interface {
43 GetStatus() (bool, error)
44 GetSecretDomain(name string) (SecretDomain, error)
45 GetSecret(dom string, sec string) (Secret, error)
47 CreateSecretDomain(name string) (SecretDomain, error)
48 CreateSecret(dom string, sec Secret) (Secret, error)
50 DeleteSecretDomain(name string) error
51 DeleteSecret(dom string, name string) error
54 // InitSecretBackend returns an interface implementation
55 func InitSecretBackend() (SecretBackend, error) {
56 backendImpl := &Vault{}
57 err := backendImpl.Init()
62 return backendImpl, nil
65 // LoginBackend Interface that will be implemented for various login backends
66 type LoginBackend interface {